Visual Studio Team Services构建失败,因为CoreCompile不引用NuGet程序集

时间:2018-01-26 19:33:20

标签: visual-studio-2017 azure-devops azure-pipelines nuget-package-restore azure-pipelines-build-task

我遇到了一个奇怪的问题,我的构建在本地机器上完美运行,但几乎总是在Visual Studio Team Services构建代理上失败。我说几乎总是相同的代码有时在VSTS构建代理上构建好。

错误是对于我的解决方案中的项目,编译器找不到System.Web.Http.dll,它在Microsoft.AspNet.WebApi.Core NuGet包中引用。我检查了参考,它就在那里。我已经删除了NuGet并重新添加它以修复任何潜在的NuGet打嗝。

确切的错误是:

  

错误CS0234:命名空间“System.Web”中不存在类型或命名空间名称“Http”(您是否缺少程序集引用?)

引用位于csproj文件中:

<Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\..\Microsoft.AspNet.Cors.5.2.3\lib\net45\System.Web.Cors.dll</HintPath>
</Reference>

VSTS的NuGet还原任务表明已安装所有NuGet包,但构建仍然失败。

然后我在Visual Studio Team Services构建代理中成功构建和失败构建的命令行之间做了差异,发现失败的构建CoreCompile任务缺少一些程序集引用。

CoreCompile从ResolveAssemblyReferences获取要引用的程序集。但ResolveAssemblyReferences声称它找不到System.Web.Http.dll。

  

对于SearchPath“{HintPathFromItem}”。   考虑“.... \ Microsoft.AspNet.WebApi.Core.5.2.2 \ lib \ net45 \ System.Web.Http.dll”,但它不存在。

从VSO恢复NuGet是否有任何已知问题?我们正在使用NuGet 4.0。

更新:

Visual Studio Team Services支持回复给我。我有自己的nuget.config,它有以下两行。这干扰了构建代理上的全局NuGet缓存。一旦我删除了这两行,一切都按预期顺利进行。

<add key="globalPackagesFolder" value="..\nupkgs" />
<add key="PackageSaveMode" value="nuspec" />

2 个答案:

答案 0 :(得分:0)

看起来,在某些时候,这个引用是手动添加的,相对路径在本地PC上匹配。

在我看过的每个有效的nuget参考中,这些相对路径都以&#34; packages&#34;为前缀。尝试删除nuget包,删除此引用,然后重新安装。

答案 1 :(得分:0)

以下是我遇到的问题的答案。

Visual Studio Team Services支持回复给我。我有自己的nuget.config,它有以下两行。这干扰了构建代理上的全局NuGet缓存。一旦我删除了这两行,一切都按预期顺利进行。

<add key="globalPackagesFolder" value="..\nupkgs" />
<add key="PackageSaveMode" value="nuspec" />