MSBuild 15 csproj与NuSpecFile

时间:2018-06-08 20:06:44

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

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

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

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

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

1 个答案:

答案 0 :(得分: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>