【问题标题】:nuget: Deploy T4 files without referencenuget:无需参考即可部署 T4 文件
【发布时间】:2017-10-09 21:45:52
【问题描述】:

我们目前在多个项目中使用一些共享的 T4 文件。这些文件现在存在于各种 git 存储库中,因此我们希望通过 nuget 分发它们。

使用这些文件作为内容创建一个 nuget 包可以正常工作,但随后我会在每个项目中获得这些 T4 的单独副本。不幸的是,每个存储库的项目数量仍然很高,因此我们会得到数百个文件重复项。这会减慢克隆和签出操作。

我试图找到一种与 Nunit3TestAdapter 类似的方法:只需将文件部署在 nuget 包的 libs 文件夹中,但不要更改项目中的任何内容。

这样我们就可以只拥有这些共享文件的一个副本。

如何在 nuspec 文件中进行管理?一旦我没有要添加到项目中的文件,我就会收到消息“您正在尝试将此包安装到以 '.NETFramework,Version=v4.0' 为目标的项目中,但该包不包含任何程序集与该框架兼容的参考或内容文件。有关更多信息,请联系包作者。"

这是我当前的 nuspec 文件(当我们通过 TFS 构建包时替换了 $ 变量):

    <?xml version="1.0"?>
<package>
    <metadata>
        <id>$SolutionName$</id>
        <version>$Version$</version>
        <authors>$SSH$</authors>
        <owners>$SSH$</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Softship common T4 templates. Current Version: $Version$</description>
        <copyright>Copyright $date$</copyright>

    <!-- Do not list this as dependency of other nuget -->
    <developmentDependency>true</developmentDependency>

    </metadata>

    <files>
        <file src="build/net35/MultipleOutputHelper.ttinclude" target="build\net35" />
        <file src="build/net35/GenerateTextMessages.ttinclude" target="build\net35" />
        <file src="build/net35/DataModelRelationsGenerator.ttinclude" target="build\net35" />
        <file src="build/net35/DataModelGenerator.ttinclude" target="build\net35" />         
    </files>

</package>

【问题讨论】:

  • 您使用的是哪个版本的 NuGet?如果 NuGet 认为构建文件夹不足以允许安装继续,我怀疑您可能必须放置一个虚拟的 lib/net35/_._ 占位符才能安装它。各种 .NET Core NuGet 包都使用这种技术 - 不提供程序集,但它允许将 NuGet 包安装到项目中。示例是 System.Xml.Document。 _._ 只是一个空文件。
  • 我试过&lt;files&gt; &lt;file src="tools/MultipleOutputHelper.ttinclude" target="tools" /&gt; &lt;file src="tools/GenerateTextMessages.ttinclude" target="tools" /&gt; &lt;file src="tools/DataModelRelationsGenerator.ttinclude" target="tools" /&gt; &lt;file src="tools/DataModelGenerator.ttinclude" target="tools" /&gt; &lt;/files&gt;,效果很好。

标签: tfs nuget


【解决方案1】:

这实际上对我有用:

<files>
        <file src="tools/MultipleOutputHelper.ttinclude" target="tools" />
        <file src="tools/GenerateTextMessages.ttinclude" target="tools" />
        <file src="tools/DataModelRelationsGenerator.ttinclude" target="tools" />
        <file src="tools/DataModelGenerator.ttinclude" target="tools" />         
    </files>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多