我遇到了一个奇怪的问题,我的构建在本地机器上完美运行,但几乎总是在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" />
答案 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" />