MsBuild,SpecificVersion和VSTS的问题

时间:2017-07-27 21:00:44

标签: msbuild nuget visual-studio-2017

方案如下:

我们有一组常见的.net库:

CommonLib.Main
CommonLib.Specialized

我们有一个构建这两个库的CI构建,并将它们放入我们的NuGet仓库中。两者都可以作为单独的NuGet包使用 - 用户可能只想加载Main,或者他们可以拉出Specialized包,其中包括Main。

专业参考主要作为Nuget包。

我正在对这些软件包进行一些升级。

首先,我升级了Main。我将Main中的AssemblyInfo版本从 1.1.0。 更新为 2.0.0。

MsBuild将在“*”位置包含内部版本号。

CI Build运行,并且我们的NuGet仓库发布了一个名为“CommonLib.Main, version=2.0.0.345”的Main版本。在Nuget repo上,正如我所料,该版本被列为“2.0.0”。

接下来,我升级了CommonLib.Specialized,并将NuGet引用更新为CommonLib.Main, version=2.0.0.

我检查了这些更改,然后再次运行CI构建。

现在,CI版本已经创建了一个新版本的Main,其版本为 2.0.0.346 ,并将其放置在NuGet仓库中。

问题在于:

现在,当我们再次运行CI构建时,CommonLib.Specialized的构建失败,因为在.csproj中,它看起来像这样:

<Reference Include="CommonLib.Main, Version=2.0.0.345, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\CommonLiib.Main-2.0.0\lib\net461\CommonLib.Main</HintPath>
    </Reference>

但是,在packages.config中,它有

<package id="CommonLib.Main" version="2.0.0" targetFramework="net461" />

下拉CommonLib.Main,版本= 2.0.0。 346

我们的构建在这里失败了:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\amd64\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "CommonLib.Main, Version=2.0.0.345, Culture=neutral, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
For SearchPath "{HintPathFromItem}".
Considered "..\packages\CommonLib.Main-2.0.0\lib\net461\CommonLib.Main.dll",
but its name "CommonLib.Main, Version=2.0.0.**346**, Culture=neutral, PublicKeyToken=null"
didn't match the expected name "CommonLib.Main, Version=2.0.0.**345**, Culture=neutral, processorArchitecture=MSIL".

我想我可以通过在项目中将SpecificVersion设置为false来解决这个问题,但这似乎相当粗糙。有没有更好的方法来解决这个问题?我觉得我不应该在每次构建后刷新NuGet引用。

0 个答案:

没有答案