使用NuGet的contentFiles将文件复制到构建输出目录

5
我希望我的NuGet包能够将一个文件添加到项目中,并设置它的“复制到输出目录”标志。
到目前为止,我正在使用install.ps1脚本,就像@workabyte的回答中所示,将内容文件设置为“始终复制本地”在nuget包中
但是我了解到,NuGet 3.3及更高版本具有本地支持,使用其contentFiles模型
我的理解是,我创建一个类似于以下结构的目录:
contentFiles\
  any\
    any\
      image.png

然后在我的.nuspec文件中:

<?xml version="1.0"?>
<package>
  <metadata minClientVersion="3.3.0">
    ...
    <contentFiles>
      <files include="**/*.png" buildAction="None" copyToOutput="true" />
    </contentFiles>
  </metadata>
</package>

当软件包编译完成后,image.png 以及其目录结构会被添加到 .nupkg 中。
但是,在我在 Visual Studio(2017)中安装软件包时,image.png 并没有被添加到项目中。
我做错了什么?
1个回答

5
contentFiles 功能仅在使用 NuGet 包的 PackageReference "style" 引用风格时支持。对于使用 packages.config 的项目,它无法工作(此时没有迁移路径,除了卸载所有包,更改类型并重新安装所有包)。请参阅 NuGet 的博客文章"NuGet is now fully integrated into MSBuild",特别是"其他不是 .NET Core 的项目类型怎么办?"一节,了解如何设置首选的 NuGet 包引用方式。

感谢您的回答。PackageReference只适用于VS 2017吗?在旧版本中,只会使用packages.config,对吗?(除非您明确安装了更新的NuGet插件)。此外,似乎使用PackageReference时不会执行install.ps1,这是正确的吗? - Martin Prikryl
我已经发布了一个后续问题如何防止NuGet内容和contentFiles文件夹中的重复文件。你能看一下吗? - Martin Prikryl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接