我正在编写一个应用程序来处理客户端机器(VS 之外)上的 T4 文件。理想情况下,我想将 .tt 文件嵌入到 dll 中。
我尝试将 Build Action 设置为 Resource,但我注意到预处理的 .cs 文件仍然包含对 .tt 文件的硬编码目录引用。
分发 .tt 文件并在运行时引用它的正确方法是什么?
为了确保我清楚,我希望能够将文件嵌入到 dll 中并作为资源访问,或者在运行时从相对于程序集路径的位置加载文件。
我正在编写一个应用程序来处理客户端机器(VS 之外)上的 T4 文件。理想情况下,我想将 .tt 文件嵌入到 dll 中。
我尝试将 Build Action 设置为 Resource,但我注意到预处理的 .cs 文件仍然包含对 .tt 文件的硬编码目录引用。
分发 .tt 文件并在运行时引用它的正确方法是什么?
为了确保我清楚,我希望能够将文件嵌入到 dll 中并作为资源访问,或者在运行时从相对于程序集路径的位置加载文件。
您不需要分发 .tt 文件本身。使用 .tt 文件需要两个步骤:
该引擎不是 Visual Studio 的可再分发部分,因此,当您想要分发 t4 模板时,您需要使用预处理模板。这样,第 1 步中生成的代码类将呈现到 t4 模板的 .cs 文件中,并与您的程序集一起编译和交付。
当使用t4模板编写C#代码时可能会感到困惑,因为步骤1的代码类也是一个C#类(当然在ac#项目中)并且包含许多实际构建的.Write()方法调用了所需的输出代码。
预处理模板包含以 #line 开头的行,后跟 T4 模板文件的本地和绝对路径。这些行用于调试目的,当模板引擎在步骤 1 中发现错误时,允许 Visual Studio 在 .tt 文件中显示正确的行。