Nuget 在输出中不包含辅助(许可证)文件



我们正在使用 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的限制而无法升级或不想使用,也可以将propstargets文件用于MS Build。一方面,实现和正确操作要复杂得多,另一方面,它提供了最大的灵活性,使您能够使用MS Build的功能,这些功能远远超出了复制文件的范围。您可以在此处找到用例的示例。

最新更新