【问题标题】:How to deploy T4 include files with NuGet packages如何使用 NuGet 包部署 T4 包含文件
【发布时间】:2019-11-23 00:36:48
【问题描述】:

我有一些 T4 包含文件,我想在多个项目中重用它们。所以我创建了一个 NuGet 包并将文件放在包的 Tools 文件夹中。现在它们已安装在packages\PackageName.x.x.x\Tools 文件夹中,我可以在项目的 T4 文件中添加包含指令。

但这样做的缺点是,路径中有一个版本号,当我创建新版本的包时会更改。这将需要我更新项目中的所有包含指令。

有没有人知道一个好的方法的提示?

【问题讨论】:

    标签: .net t4 nuget


    【解决方案1】:

    如果这些 T4 模板应该在库中生成代码,那么您可以将它们放入内容目录中。

    它们将被添加到引用 nuget 包的库中。所以将工具重命名为内容(或添加新的文件夹内容),你应该没问题。您还可以将子文件夹添加到该文件夹​​。或者把.cs文件放在那里。

    见:http://docs.nuget.org/docs/reference/nuspec-reference

    【讨论】:

    • 不喜欢用这样的内容污染我的项目。我想我会寻求从 TextTransformation 继承一个类的解决方案,如此处所述 (stackoverflow.com/a/8364027/1083432)(稍后发现)
    【解决方案2】:

    T4 包含指令不能识别 msbuild 属性,但程序集可以。因此,您可以使用基本模板类并从 NuGet 包中引用程序集。

    使用 NuGet 2.5(在发布原始帖子时可能不可用),您可以创建一个 msbuild .props 文件。将 $(MSBuildThisFileDirectory) 组合到程序集的相对路径分配给新的 msbuild 属性。然后可以在使用 NuGet 包的项目的 T4 模板中使用新属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多