我有一些T4包含文件,我想在几个项目中重用。所以我创建了一个NuGet包并将文件放在包的Tools文件夹中。现在它们安装在packages \ PackageName.x.x.x \ Tools文件夹中,我可以在项目的T4文件中添加include指令。 但缺点是,在创建新版本的软件包时,路径中会有一个版本号。这将要求我更新项目中的所有include指令。 有没有人知道一个好的方法呢?
答案 0 :(得分:2)
如果这些T4模板应该在库中生成代码,那么您可以将它们放入内容目录中。
它们将被添加到具有nuget包引用的库中。因此,将工具重命名为内容(或添加新的文件夹内容),您应该没问题。您还可以将子文件夹添加到该文件夹。或者把.cs文件放在那里。
答案 1 :(得分:2)
T4 include指令不识别msbuild属性,但是程序集属性。因此,您可以使用基本模板类并从NuGet包中引用程序集。
使用NuGet 2.5(可能在原始帖子时不可用),您可以创建一个msbuild .props文件。将$(MSBuildThisFileDirectory)与程序集的相对路径组合到一个新的msbuild属性。然后可以在使用NuGet包的项目的T4模板中使用新属性。