我们正在使用 nuget 打包较旧的库 (dll( 文件,以便在我们的企业 nuget 共享中使用。 我们已经成功地与许多其他图书馆合作
。对于我正在打包的当前文件,有一个许可证文件(.lic 文件(必须与 dll 和 xml 文件一起复制,但它不包含在构建输出中。 这是我在 .nuspec 中<files>
部分:
<files>
<file src="Lictest.lic" target="lib" />
<file src="net4.0test.dll" target="lib" />
<file src="net4.0test.XML" target="lib" />
</files>
这会导致所有三个文件都打包在 .nupkg 文件的 lib 文件夹中(如预期的那样(。 但是,生成使用项目时,\bin 文件夹中缺少 .lic 文件:
输出中缺少许可证文件
我尝试了<file>
标签的许多变体,甚至尝试了<contentFiles><files...>
标签的变体。
有没有人知道如何将.lic文件与编译后的输出一起复制?
编辑 6/30/2020:
好的,我已经尝试了@thatguy建议的技术,但它不起作用。 编译项目时,.lic 文件未包含在 bin 文件夹中;当我解压缩它时,它甚至没有在 .nupkg 文件中引用。
我通过打开项目文件验证了我的视觉工作室项目是否正在使用 PackageReferences。 .nupkg 中缺少 .lic 文件表明 .nuspec 文件内容存在错误。 这是我的 nuspec 文件的屏幕截图。 标签或内容还有问题吗? 我的 .nuspec 内容的屏幕截图
如果使用PackageReference
而不是packages.config
,则可以使用contentFiles
标记。它必须包含在metadata
标签中。将test.lic
等内容文件放在子文件夹中anyany
,否则它将不起作用。以下代码片段将导致在生成项目时将内容文件复制到输出文件夹。
<contentFiles>
<files include="any/any/test.lic" buildAction="None" copyToOutput="true" />
</contentFiles>
您可以升级现有的 .NET Framework 项目以使用PackageReference
.NET Core 项目默认具有它。如果由于contentFiles
的限制而无法升级或不想使用,也可以将props
和targets
文件用于MS Build。一方面,实现和正确操作要复杂得多,另一方面,它提供了最大的灵活性,使您能够使用MS Build的功能,这些功能远远超出了复制文件的范围。您可以在此处找到用例的示例。