多个"错误CS0234"导致MSSTild在VSTS中失败

时间:2017-06-08 13:49:22

标签: msbuild azure-pipelines azure-pipelines-build-task visual-studio-2017

我有一个用VS2017编写的MVC5 Web应用程序。它针对.NET 4.6.1。在我的开发机器上,它可以毫无问题地构建和运行。我甚至可以使用VS中的“发布”功能将其发布到我的服务器,它运行正常。

我现在正试图在VSTS中实例化CI,这是我在其他项目之前成功完成的事情。 Build运行时,MSBuild任务失败。日志显示了许多基本相同的CS0234错误实例,与错过的引用有关。例如:

enter image description here

我已经做了很多谷歌搜索并尝试了各种各样的事情。我删除并重新添加了NuGet包。我确保所有引用的Copy Local属性都是True。我尝试在项目的高级构建设置中手动指定C#语言版本(我抓着稻草!)。

最初我试图让这个与本地托管的代理(构建其他项目没有问题)一起工作,所以我已经进入该机器,安装了VS2017并重建并在VS上运行项目,再次没有问题。在任何情况下,我都不认为该问题与运行构建代理的计算机有关,因为当我使用Azure托管的构建代理时,我会遇到相同的错误。

我在SO和其他地方发现的大多数问题都与某个明显缺失的特定参考有关。正如您所看到的,在我看来,几乎所有引用的程序集都缺失了!

我已经分享了完整的Build任务日志here。你会发现大部分错误都是从第1059行开始的,但有一些问题出现在第129行(其中包括)的警告中,其中说:

##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

显然缺少必要的文件,但为什么呢?为什么即使在Azure托管的代理机器上它们也会丢失?而且,最重要的是,如何在需要的地方恢复/安装它们?正如我所说,解决方案在我自己的机器上构建良好。

1 个答案:

答案 0 :(得分:2)

请参阅以下步骤修改构建定义:

  1. 添加 NuGet安装程序任务(解决方案路径或packages.config:**\*.sln;安装类型:Restore
  2. enter image description here

    1. 在高级部分
    2. 中将NuGet版本更改为 4.0
    3. 使用托管VS2017 代理构建队列。