多个 "Error CS0234" 导致 MSBuild 在 VSTS 中失败
Multiple "Error CS0234" causing MSBuild to fail in VSTS
我有一个用 VS2017 编写的 MVC5 Web 应用程序。它以 .NET 4.6.1 为目标。在我的开发机器上,它可以毫无问题地构建 运行s。我什至可以使用 VS 中的发布功能将其发布到我的服务器,而且效果很好。
我现在正尝试在 VSTS 中实例化 CI,这是我之前在其他项目中成功完成过很多次的事情。当 Build 运行s 时,MSBuild 任务失败。日志显示许多基本相同的 CS0234 错误实例,与缺少引用有关。例如:
我已经为此做了很多谷歌搜索并尝试了各种各样的事情。我删除并重新添加了 NuGet 包。我已经确定我所有参考文献的 Copy Local
属性都是 True
。我试过在项目的高级构建设置中手动指定 C# 语言版本(我抓紧救命稻草!)。
最初我试图让这个与本地托管的代理一起工作(它可以毫无问题地构建其他项目),所以我去了那台机器,安装了 VS2017 并重建了 运行 项目在VS上就可以了,再次没有问题。无论如何,我认为问题与机器 运行 构建代理无关,因为我在使用 Azure 托管的构建代理时遇到了同样的错误。
我在 SO 和其他地方发现的大多数问题都与显然缺失的特定参考有关。如您所见,在我的例子中,似乎几乎所有引用的程序集都丢失了!
我已经分享了完整的构建任务日志 here。您会看到大部分错误从第 1059 行开始,但是第 129 行(以及其他)出现了问题警告,它说:
##[warning]C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.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 托管的代理机器上它们也会丢失?而且,最重要的是,我如何 restore/install 他们需要的地方?正如我所说,该解决方案在我自己的机器上运行良好。
请参考以下步骤修改您的构建定义:
- 添加 NuGet 安装程序 任务(解决方案路径或 packages.config:
**\*.sln
;安装类型:Restore
)
- 在高级部分将 NuGet 版本更改为 4.0
- 使用 Hosted VS2017 代理构建队列。
我有一个用 VS2017 编写的 MVC5 Web 应用程序。它以 .NET 4.6.1 为目标。在我的开发机器上,它可以毫无问题地构建 运行s。我什至可以使用 VS 中的发布功能将其发布到我的服务器,而且效果很好。
我现在正尝试在 VSTS 中实例化 CI,这是我之前在其他项目中成功完成过很多次的事情。当 Build 运行s 时,MSBuild 任务失败。日志显示许多基本相同的 CS0234 错误实例,与缺少引用有关。例如:
我已经为此做了很多谷歌搜索并尝试了各种各样的事情。我删除并重新添加了 NuGet 包。我已经确定我所有参考文献的 Copy Local
属性都是 True
。我试过在项目的高级构建设置中手动指定 C# 语言版本(我抓紧救命稻草!)。
最初我试图让这个与本地托管的代理一起工作(它可以毫无问题地构建其他项目),所以我去了那台机器,安装了 VS2017 并重建了 运行 项目在VS上就可以了,再次没有问题。无论如何,我认为问题与机器 运行 构建代理无关,因为我在使用 Azure 托管的构建代理时遇到了同样的错误。
我在 SO 和其他地方发现的大多数问题都与显然缺失的特定参考有关。如您所见,在我的例子中,似乎几乎所有引用的程序集都丢失了!
我已经分享了完整的构建任务日志 here。您会看到大部分错误从第 1059 行开始,但是第 129 行(以及其他)出现了问题警告,它说:
##[warning]C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.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 托管的代理机器上它们也会丢失?而且,最重要的是,我如何 restore/install 他们需要的地方?正如我所说,该解决方案在我自己的机器上运行良好。
请参考以下步骤修改您的构建定义:
- 添加 NuGet 安装程序 任务(解决方案路径或 packages.config:
**\*.sln
;安装类型:Restore
)
- 在高级部分将 NuGet 版本更改为 4.0
- 使用 Hosted VS2017 代理构建队列。