【发布时间】:2019-11-23 00:36:48
【问题描述】:
我有一些 T4 包含文件,我想在多个项目中重用它们。所以我创建了一个 NuGet 包并将文件放在包的 Tools 文件夹中。现在它们已安装在packages\PackageName.x.x.x\Tools 文件夹中,我可以在项目的 T4 文件中添加包含指令。
但这样做的缺点是,路径中有一个版本号,当我创建新版本的包时会更改。这将需要我更新项目中的所有包含指令。
有没有人知道一个好的方法的提示?
【问题讨论】:
我有一些 T4 包含文件,我想在多个项目中重用它们。所以我创建了一个 NuGet 包并将文件放在包的 Tools 文件夹中。现在它们已安装在packages\PackageName.x.x.x\Tools 文件夹中,我可以在项目的 T4 文件中添加包含指令。
但这样做的缺点是,路径中有一个版本号,当我创建新版本的包时会更改。这将需要我更新项目中的所有包含指令。
有没有人知道一个好的方法的提示?
【问题讨论】:
如果这些 T4 模板应该在库中生成代码,那么您可以将它们放入内容目录中。
它们将被添加到引用 nuget 包的库中。所以将工具重命名为内容(或添加新的文件夹内容),你应该没问题。您还可以将子文件夹添加到该文件夹。或者把.cs文件放在那里。
【讨论】:
T4 包含指令不能识别 msbuild 属性,但程序集可以。因此,您可以使用基本模板类并从 NuGet 包中引用程序集。
使用 NuGet 2.5(在发布原始帖子时可能不可用),您可以创建一个 msbuild .props 文件。将 $(MSBuildThisFileDirectory) 组合到程序集的相对路径分配给新的 msbuild 属性。然后可以在使用 NuGet 包的项目的 T4 模板中使用新属性。
【讨论】: