使用PackageVersion属性

时间:2018-01-12 15:46:48

标签: c# msbuild nuget visual-studio-2017 .net-standard

我有两个.NetStandard NuGet套餐,我在同一个解决方案(A和B)中构建

A有一个对B的项目引用。

默认情况下,当我在VS中构建时,它将为两个项目创建一个NuGet包。

A.1.0.0.nupkg将包含此依赖项,该依赖项由msbuild自动添加:

<dependency id="B" version="1.0.0" exclude="Build,Analyzers" />

工作正常,它的自动化很棒。

如果我将B的包版本更改为2.0.0并构建,A.nuspec中的行将自动更新为:

<dependency id="B" version="2.0.0" exclude="Build,Analyzers" />

这太棒了,它就像魔法一样。

问题是,如果我使用PackageVersion属性构建,会有效:

msbuild /p:PackageVersion="3.0.0"

我希望msbuild会创建两个nupkgs:

  • A.3.0.0.nupkg
  • B.3.0.0.nupkg

确实如此。但是,A.nuspec仍具有此依赖性:

<dependency id="B" version="2.0.0" exclude="Build,Analyzers" />

我希望它是version="3.0.0"

这有什么变通方法吗?我应该采用不同的方式配置我的包吗?

1 个答案:

答案 0 :(得分:1)

目前(NuGet 4.5.0),版本在还原操作期间被锁定,而不是在包构建期间。

这将在NuGet 4.6.0(包含在VS 15.6中)中进行更改。

要解决此问题,请改用msbuild /restore /p:PackageVersion=3.0.0

有关详细信息,请参阅this GitHub issue