“多重”;错误CS0234“;导致MSBuild在VST中失败

“多重”;错误CS0234“;导致MSBuild在VST中失败,msbuild,azure-pipelines,azure-pipelines-build-task,visual-studio-2017,Msbuild,Azure Pipelines,Azure Pipelines Build Task,Visual Studio 2017,我有一个用VS2017编写的MVC5 web应用程序。它的目标是.NET4.6.1。在我的开发机器上,它构建和运行没有问题。我甚至可以使用VS中的发布功能将其发布到我的服务器上,而且效果非常好 我现在正在尝试在VST中实例化CI,这是我在其他项目中成功地做过很多次的事情。生成运行时,MSBuild任务失败。日志显示了许多与缺少引用有关的基本相同的CS0234错误实例。例如: 我在谷歌上搜索了很多,尝试了各种各样的方法。我已经删除并重新添加了NuGet软件包。我已确保我所有参考资料的本地复制属性

我有一个用VS2017编写的MVC5 web应用程序。它的目标是.NET4.6.1。在我的开发机器上,它构建和运行没有问题。我甚至可以使用VS中的发布功能将其发布到我的服务器上,而且效果非常好

我现在正在尝试在VST中实例化CI,这是我在其他项目中成功地做过很多次的事情。生成运行时,MSBuild任务失败。日志显示了许多与缺少引用有关的基本相同的CS0234错误实例。例如:

我在谷歌上搜索了很多,尝试了各种各样的方法。我已经删除并重新添加了NuGet软件包。我已确保我所有参考资料的
本地复制属性为
。我已经尝试在项目的高级构建设置中手动指定C语言版本(我正在抓紧救命稻草!)

最初,我试图通过一个本地托管的代理来实现这一点(该代理可以毫无问题地构建其他项目),因此我在这台机器上安装了VS2017,并在VS上重建和运行了该项目,同样没有问题。无论如何,我认为问题与运行构建代理的机器无关,因为我在使用Azure托管的构建代理时会遇到相同的错误

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

我已经共享了完整的构建任务日志。您将看到大部分错误开始于第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托管的代理计算机上,它们也会丢失?而且,最重要的是,我如何在需要的地方恢复/安装它们?正如我所说,解决方案在我自己的机器上构建得很好。

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

  • 添加NuGet安装程序任务(解决方案或包的路径。配置:
    ***.sln
    ;安装类型:
    还原
  • 在高级部分将NuGet版本更改为4.0
  • 使用托管的VS2017代理进行队列生成

  • 您的生成定义是否包含nuget还原任务?当我搜索可用的任务类型以添加“nuget”时,只有四个匹配项:nuget命令、nuget Packager、nuget发布者和nuget还原。我假设最后一个是您想要的,但当我添加它时,它没有提供您描述的任何选项(安装类型、NuGet版本)。我已经在使用托管的VS2017代理。@PhilipStratford将版本更改为0。*。我更新了我的答案。