0

我正在编写一个应用程序来处理客户端机器(VS 之外)上的 T4 文件。理想情况下,我想将 .tt 文件嵌入到 dll 中。

我尝试将 Build Action 设置为 Resource,但我注意到预处理的 .cs 文件仍然包含对 .tt 文件的硬编码目录引用。

分发 .tt 文件并在运行时引用它的正确方法是什么?

为了确保我清楚,我希望能够将文件嵌入到 dll 中并作为资源访问,或者在运行时从相对于程序集路径的位置加载文件。

4

1 回答 1

2

您不需要分发 .tt 文件本身。使用 .tt 文件需要两个步骤:

  1. 模板引擎将模板转换为一些可编译和可运行的代码类。
  2. 此代码类运行并生成输出代码

该引擎不是 Visual Studio 的可再分发部分,因此,当您想要分发 t4 模板时,您需要使用预处理模板。这样,第 1 步中生成的代码类将呈现到 t4 模板的 .cs 文件中,并与您的程序集一起编译和交付。

当使用t4模板编写C#代码时可能会感到困惑,因为步骤1的代码类也是一个C#类(当然在ac#项目中)并且包含许多实际构建的.Write()方法调用了所需的输出代码。

预处理模板包含以 #line 开头的行,后跟 T4 模板文件的本地和绝对路径。这些行用于调试目的,当模板引擎在步骤 1 中发现错误时,允许 Visual Studio 在 .tt 文件中显示正确的行。

于 2013-03-11T08:13:38.840 回答