【问题标题】:Visual studio 2017 and nuget packageVisual Studio 2017 和 nuget 包
【发布时间】:2017-05-04 07:02:54
【问题描述】:

我正在创建应该包含配置文件的 nuget 包。问题是,如果我想使用 csproj 进行 nuget 包定义,我不知道如何在安装包时指定应该复制配置文件并在文件集上“复制到输出目录”。

https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017

之前我使用过 nuspec 和 install.ps1。

谢谢 (https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017)

【问题讨论】:

    标签: msbuild nuget visual-studio-2017 csproj


    【解决方案1】:

    要包含文件,您需要为文件添加/修改更新项。如果您已将“复制到输出目录”设置为“保留最新”,则您的 csproj 文件中可能已经有一个。要将此文件包含到生成的 nuget 包中,您需要设置 Pack="true" 元数据:

    <ItemGroup>
      <None Update="config.txt" CopyToOutputDirectory="PreserveNewest" Pack="true" />
    </ItemGroup>
    

    请注意,根据您的项目类型(=> 使用 web sdk 或“普通”sdk),您可能会看到文件的不同项目类型(NoneContent)。

    【讨论】:

    • 但这并没有将 config.txt 复制到安装此 nuget 包的项目中,并且没有在复制的文件 CopyToOutputDirectory 上设置。这就是目标。
    • 目前需要自定义 nuspec。请注意(即使构建操作有效)文件不再使用 NuGet 4 和 PackageReference 复制到使用项目的源代码中。
    • 这不是很有帮助。很多时候,某些库提供了一些您想要修改的配置或静态文件。因为他们不在消费项目中,所以这是不可能的。如果你创建自己的同名,我希望它会在构建过程中被包中的那个覆盖。
    • 与消费项目一起部署的静态文件是新的contentFiles 功能(由于我链接的 GH 问题而无法正确使用)。但是 NuGet 包不再应该修改使用它们的项目的源代码(添加内容、执行脚本)。不过,他们可以引入 MSBuild 道具/目标。它仍然适用于基于 packages.config 的工具,但不适用于正在开发的新工具选项。
    • 为了将文件添加到项目中,应使用模板 - 在 VS 中或通过新的 dotnet cli - 例如dotnet new MyLibConfig.
    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多