【问题标题】:Use NuGet contentFiles to copy a file to build output directory使用 NuGet contentFiles 复制文件以构建输出目录
【发布时间】:2017-11-23 09:46:36
【问题描述】:

我需要我的 NuGet 包将文件添加到项目并设置其 “复制到输出目录” 标志。

到目前为止,我使用的是install.ps1 脚本,如answer by @workabyte to Set content files to “copy local : always” in a nuget package 所示。

但我知道 NuGet 3.3 及更高版本使用其contentFiles model 提供本机支持。

我的理解是我创建了一个目录结构,如下所示:

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 甚至没有添加到项目中。

我做错了什么?

【问题讨论】:

    标签: visual-studio nuget nuget-package csproj


    【解决方案1】:

    contentFiles 功能仅在使用 PackageReference 引用 NuGet 包的“样式”时受支持。它不适用于使用packages.config 的项目(并不是说在撰写本文时除了卸载所有软件包、更改类型并重新安装所有软件包之外没有迁移路径)。

    请参阅 NuGet 的博文 "NuGet is now fully integrated into MSBuild",尤其是“非 .NET Core 的其他项目类型怎么办?”部分有关如何设置引用 NuGet 包的首选方式的说明。

    【讨论】:

    • 感谢您的回答。 PackageReference 只是 VS 2017 的东西吗?在旧版本中,packages.config 只被使用过,对吧? (也许除非您明确安装从不版本的 NuGet 插件)。另外,PackageReference 似乎没有执行install.ps1,对吗?
    • 我已经发布了一个后续问题Prevent duplicating files in NuGet content and contentFiles folders。可以看看吗?
    猜你喜欢
    • 2020-03-05
    • 2019-12-23
    • 2020-06-22
    • 2023-03-03
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多