带有 NuSpecFile 的 MSBuild 15 csproj

MSBuild 15 csproj with NuSpecFile

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

本质上,我正在寻找 运行 csproj 上的 dotnet pack 并让它使用 csproj 生成文件、依赖项和版本,但现有的 nuspec 文件用于其余元数据。

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

.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>