Nuspec buildAction不适用于contentFiles

时间:2017-10-09 12:53:01

标签: nuget nuget-package nuspec nuget-spec

我最近一直在尝试创建一个 .nuspec 文件,该文件将 .dll 文件作为嵌入式资源附加。为此,我使用contentFiles上的metadata标记,设置buildAction="EmbeddedResource",如{{3}上示例contentFiles部分部分所述}。

您可以在下面看到我的 .nuspec 文件内容:

<package>
    <metadata>
        <id>MyPackage</id>
        <version>1.0.0.0</version>
        <title>MyPackage</title>
        <authors>Matias G Henschel</authors>
        <owners>Matias G Henschel</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>My package description</description>
        <copyright>2017</copyright>
        <contentFiles>
            <files include="myDllFile.dll" buildAction="EmbeddedResource" />
        </contentFiles>
    </metadata>
    <files>
        <file src="content\myDllFile.dll" target="contentFiles" />
    </files>
</package>

此软件包正确地将文件复制到目标项目中,但不会对其应用“构建操作”,这对我来说至关重要。

我也尝试使用 .targets 文件,但没有成功。

如果您想了解更多内容,我还创建了the official documentation

PS:恕我直言,关于contentFiles和.targets文件的文档都需要一些返工,它们不够清晰,而且.targets缺乏示例。

1 个答案:

答案 0 :(得分:1)

您还需要一个文件条目来将文件实际复制到正确的contentFiles文件夹:

<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    …
    <contentFiles>
      <files include="any/any/MyEmbeddedFile.txt" buildAction="EmbeddedResource" />
    </contentFiles>
  </metadata>
  <files>
    <file src="path/to/MyEmbeddedFile.txt" target="contentFiles/any/any/MyEmbeddedFile.txt" />
  </files>
</package>

请注意,这仅适用于基于project.json项目的NuGet 3.3+和基于PackageReference项目的NuGet 4+。对于通过packages.config使用此程序包的项目,您仍需要将文件添加到content文件夹并添加自定义目标,以使其成为正确的项目类型。