2011-12-06 97 views
3

我有几个T4包含文件,我想在几个项目中重复使用。所以我创建了一个NuGet包,并将这些文件放在包的Tools文件夹中。现在它们被安装在packages \ PackageName.x.x.x \ Tools文件夹中,我可以在项目的T4文件中添加一个include指令。 但是这样做的缺点是,当我创建新版本的软件包时,路径中会有一个版本号发生变化。这将需要我更新项目中的所有包含指令。 有没有人知道这个好方法的提示?如何使用NuGet包部署T4包含文件

回答

2

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

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

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

+2

不喜欢用这些内容污染我的项目。我想我去解决方案从TextTransformation继承一个类,如此处所述(http://stackoverflow.com/a/8364027/1083432)(稍后发现) – Jaap

2

的T4包括指令不能识别的MSBuild属性,但组装一个呢。因此,您可以使用基本模板类并从NuGet包中引用程序集。

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

相关问题