包含在T4模板中只工作一次

本文关键字:一次 工作 T4 包含 | 更新日期: 2023-09-27 18:02:53

我有一个包含指令在我的T4-Template在c#:

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

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

包含在T4模板中只工作一次

根据include指令的文档,有一个名为"once"的可选参数,默认为"true"。来自文档:

使用once="true"来确保模板只被包含一次如果从多个其他include文件调用它。

这个特性使构建可重用的T4代码片段库变得容易可以随意包含而不用担心其他代码片段有已经包括了。例如,假设您有一个库处理模板处理和c#的非常细粒度的代码片段的一代。反过来,它们被一些更特定于任务的人使用生成异常等实用程序,然后可以从任何特定于应用程序的模板。如果你画出依赖关系图中,您可以看到一些片段将被包含多次。但once参数防止后续包含。

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

对于这个问题我有一个"解决方案":

模板代码只有在模板本身发生变化时才会重新构建。无法识别外部静态文件中的更改。因此,模板的解析必须在通过上下文菜单"Run Custom Tool"进行更改后手动启动。