【发布时间】:2018-01-26 19:33:19
【问题描述】:
我遇到了一个奇怪的问题,我的构建在本地机器上运行良好,但在 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。
对于搜索路径“{HintPathFromItem}”。 考虑“....\Microsoft.AspNet.WebApi.Core.5.2.2\lib\net45\System.Web.Http.dll”,但它不存在。
从 VSO 还原 NuGet 是否存在任何已知问题?我们正在使用 NuGet 4.0。
更新:
Visual Studio 团队服务支持又回来了。我有自己的 nuget.config,它有以下 2 行。这干扰了构建代理上的全局 NuGet 缓存。一旦我删除了这两行,一切都按预期顺利进行。
<add key="globalPackagesFolder" value="..\nupkgs" /> <add key="PackageSaveMode" value="nuspec" />
【问题讨论】:
-
请添加您自己的更新作为答案。
-
解决方案在帖子本身。基本上我们搞乱了导致零星故障的全局包文件夹。
-
但这不是 StackOverflow 的工作方式。如果您已经找到答案,请自行回答。这样,它就会被标记为已修复,并且不会出现在试图帮助他人的人面前。它还将帮助其他有类似问题的人在您的帖子中寻求帮助。见:stackoverflow.com/help/self-answer
标签: visual-studio-2017 azure-devops azure-pipelines nuget-package-restore azure-pipelines-build-task