【问题标题】:include in T4 templates only works once包含在 T4 模板中仅适用一次
【发布时间】:2015-07-16 07:01:16
【问题描述】:

我在 C# 中的 T4 模板中有一个包含指令:

<#@ include file="styles.css" #>

styles.css 中的文本包含正确。但也只是第一次。如果我在 styles.css 文件中进行更改并重新构建/重新运行应用程序,则会包含旧版本(好像它来自缓存或类似的东西)。 仅包含 styles.css 中的更改,如果我删除 include 指令,然后构建并插入该行。然后它就可以工作了……直到在 styles.css 中进行下一次更改

【问题讨论】:

    标签: c# css templates t4


    【解决方案1】:

    根据包含指令的docs,有一个名为“once”的可选参数,默认为“true”。来自文档:

    使用 once="true" 确保模板只包含一次,即使 如果它是从多个其他包含文件中调用的。

    此功能 使您可以轻松构建可重用的 T4 sn-ps 库 可以随意包含而不用担心其他一些sn-p有 已经包括他们了。例如,假设您有一个库 处理模板处理和 C# 的非常细粒度的 sn-ps 一代。反过来,这些被一些更具体的任务使用 实用程序,例如生成异常,然后您可以从中使用 任何更多特定于应用程序的模板。如果您绘制依赖项 图表,您会看到一些 sn-ps 将被包含多次。但 once 参数可防止后续包含。

    我的猜测是将此设置为 false 将允许您的 css 文件每次都被处理。

    【讨论】:

    • 不幸的是,这不起作用。 “once”选项仅防止在模板中的不同点多次包含同一文件。
    • 您从哪里运行模板?您是在 Visual Studio 中进行设计时还是在应用程序代码中进行运行时?
    • 它是一个运行时模板,其中包含一些代码,用于填充来自数据库的动态数据。
    【解决方案2】:

    我有这个问题的“解决方案”:

    仅当模板本身发生更改时,才会重新构建模板代码。无法识别外部静态文件中的更改。因此,模板的解析必须在通过上下文菜单“运行自定义工具”更改后手动启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多