我有两个.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"
这有什么变通方法吗?我应该采用不同的方式配置我的包吗?
答案 0 :(得分:1)
目前(NuGet 4.5.0),版本在还原操作期间被锁定,而不是在包构建期间。
这将在NuGet 4.6.0(包含在VS 15.6中)中进行更改。
要解决此问题,请改用msbuild /restore /p:PackageVersion=3.0.0
。
有关详细信息,请参阅this GitHub issue。