Azure DevOps托管代理NuGet依赖项版本行为

时间:2019-12-13 20:09:31

标签: azure-devops nuget

无论我将其发送到云中的托管代理还是内部部署的代理,我的构建似乎都表现不同。正在构建的解决方案具有专门使用<PackageReference>的项目,并且正在使用全新的msbuild /restore函数来构建该解决方案。行为不同的特定方式是在本地代理上,NuGet还原会生成一堆这样的警告:

##[warning]IQ.Core.Update\6.0.0\IQ.Core.Update.Services\IQ.Core.Update.Services.csproj(0,0): Warning NU1603: IQ.Enterprise.Activation.Model 6.0.8 depends on IQ.Framework (>= 6.8.0) but IQ.Framework 6.8.0 was not found. An approximate best match of IQ.Framework 6.8.1 was resolved.

实际上,我们的内部软件包服务器提供了许多新版本的IQ.Framework。

运行相同的构建,云代理不会生成这些警告。通过将“ dependencyversion”设置为“最高”,云代理是否可能预先配置了可以覆盖默认行为的NuGet.config?或托管代理上是否存在其他导致警告1603被抑制的内容?

在TeamCity上运行的此构建的先前版本也未记录这些类型的警告,并且我很确定我们的TeamCity代理没有任何特殊的NuGet配置。

我担心本地代理上构建的功能实际上是否会与云代理上的功能有所不同,而更早的TeamCity是否会针对不同版本的引用包进行构建。

1 个答案:

答案 0 :(得分:0)

  

...取决于IQ.Framework(> = 6.8.0),但不是IQ.Framework 6.8.0   找到了。解决了IQ.Framework 6.8.1的最佳匹配问题。

当还原过程找不到一个特定版本的参考软件包时,总是会出现此警告。并且它表明本地代理的高速缓存中的IQ.Enterprise.Activation.Model-6.0.8在其xx.nuspec文件中具有以下内容:

<dependencies>
    <dependency id="IQ.Framework" version="6.8.0" />
</dependencies>
  

Azure DevOps托管代理NuGet依赖项版本行为

Jonathan 进行了漫长的讨论之后,我们已经确认,这种奇怪的行为是由两个代理中IQ.Enterprise.Activation.Model 6.0.8的不同内容引起的。尽管它们是相同的版本6.0.8,但是它们的xx.nuspec文件实际上具有不同的依赖性。在本地代理中,应该为<dependency id="IQ.Framework" version="6.8.0" />,而在云代理中,显然不是6.8.0。因此此警告发生在本地计算机上,但在使用云代理时不会发生。(6.8.0不适用于两个代理)