【问题标题】:MSBuild 15 csproj with NuSpecFileMSBuild 15 csproj 与 NuSpecFile
【发布时间】:2018-06-08 20:06:44
【问题描述】:

我们正在努力迁移到 PackageReference 恢复样式 csproj,但对于此类项目有许多 nuspec,它们依赖于一些默认的 nuget pack CLI 行为。具体来说:

  • 版本替换
  • 自动生成依赖部分
  • 自动生成文件部分

基本上,我希望在 csproj 上运行 dotnet pack,并让它使用 csproj 生成文件、依赖项和版本,但其他元数据的现有 nuspec 文件。

如果我在 csproj 中指定 NuSpecFile,它会正确使用 nuspec 文件,但不再生成基于 csproj 的文件、依赖项或版本。

【问题讨论】:

    标签: msbuild nuget nuget-package csproj msbuild-15


    【解决方案1】:

    .NET SDK 的基于 MSBuild 的打包功能可以选择生成用于打包的 nuspec 文件(默认)或使用用户提供的 nuspec 文件(NuSpecFile 属性)来生成包。

    没有混合这些方法的功能。

    我建议将您需要的所有元数据放入 csproj 文件中。有关可用于控制包元数据的 MSBuild 属性列表,请参阅 documentation on the pack target

    如果您希望跨多个项目共享元数据,请在解决方案的根文件夹(所有项目的目录层次结构或高于所有项目的目录层次结构)中创建一个 Directory.Build.props 文件,其中包含您要共享的内容:

    <Project>
      <PropertyGroup>
        <Authors>shared authors value</Authors>
        <PackageProjectUrl>https://something</PackageProjectUrl>
        …
      </PropertyGroup>
    </Project>
    

    【讨论】:

    • 哦,好吧...只是在寻找一种更简单的方法来迁移到新的构建系统。我希望 msbuild 没有这么乱。