【发布时间】:2018-07-04 05:16:48
【问题描述】:
如何复制与 NuGet 包中的 DLL 一起包含的文本文件?
当我在另一个解决方案(本示例中为c:\dev\)中使用我的自定义 NuGet 包时,c:\dev\package\projectId\lib\netstandard2.0\ 中生成的文件结构包含许多 DLL 和一个文本文件,例如 file.txt。在构建解决方案时会复制所有 DLL,但留下了文本文件。
在.nuspec 文件中,我最初将文件包含在<files><file src="foo\file.txt" target="lib\netstandard2.0"/></files> 下。还原 NuGet 包时,file.txt 最终会出现在 packages 文件夹中,但不会复制到构建目录中。
尝试 1:我尝试在 nuspec 文件中使用 contentFiles 属性,因为 nuspec reference 多次指向那里。我得到了nuget.exe pack 命令来使用这个新属性(即没有语法错误),但内容(file.txt)的处理方式没有改变。
尝试 2:我尝试使用 projectId.targets 文件。这使用了一个Target,它有一个包含该文件的ItemGroup。然后,我尝试使用Copy 事件,将目标文件夹指向为$(OutputPath)。
将包中包含的文件复制到构建目录似乎非常困难,不得不深入研究 MSBuild 事件等。
我在这里不知所措,欢迎任何指点。
编辑#1:
我尝试根据以下建议将此部分添加到元数据中:
<contentFiles>
<files include="any\any\file.txt" buildAction="EmbeddedResource" />
</contentFiles>
这适用于一个小测试用例。 file.txt 在 Visual Studio 和构建目录中都很好地显示。奇怪的是,它在我的主项目中使用相同的确切语法不起作用(我在两者中都使用 .NET Core 2.0)。此外,在 NuGet 包资源管理器中,它单独显示在包内容中。但是当我在<files><file src="lib\netstandard2.0\test.dll" target="lib\netstandard2.0"/></files> 下添加一些内容时,它会从该视图中消失。
编辑#2:
我认为还有其他事情发生...Here is the .nuspec file from our main project。当我添加具有以下工作建议的内容文件时,它仍然没有显示(对于 .NET Core 2.0 或 .NET Framework 4.7.1)。 .targets 文件是否以某种方式搞砸了?
【问题讨论】:
标签: c# msbuild nuget nuget-package nuget-spec