我最近一直在尝试创建一个 .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缺乏示例。答案 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
文件夹并添加自定义目标,以使其成为正确的项目类型。