无法在C#中构建和运行测试:无法从程序集Microsoft.Build.CppTasks.Common,版本= 12.0.0.0

问题描述

当我对.csproj项目执行msbuild时,它会成功构建。

但是,当尝试在 VS2017 中构建并运行测试时,出现以下错误:

无法从程序集中加载“ Xsd”任务 Microsoft.Build.CppTasks.Common,版本= 12.0.0.0,文化=中性, PublicKeyToken = b03f5f7f11d50a3a。无法加载文件或程序集 'Microsoft.Build.CppTasks.Common,版本= 12.0.0.0,文化=中性, PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。的 系统找不到指定的文件。确认 声明是正确的,该程序集及其所有依赖项都是 可用,并且该任务包含一个实现了的公共类 Microsoft.Build.Framework.ITask。

我在this post中尝试了解决方案,但不幸的是没有用。请具体说明/切实可行。

解决方法

无法在C#中构建和运行测试:无法加载“ Xsd”任务 来自程序集Microsoft.Build.CppTasks.Common,版本= 12.0.0.0

正如this document所说,自 VS2017 起, MSBuild 中已弃用 Xsd任务

enter image description here

似乎您自己的项目中需要由MSBuild XSD 任务进行编译,因此会出现此错误。

并且您的插件应使用VS2015的MSBuild或更早版本的MSBuild来构建此测试项目。因此,错误并没有在那里发生。

建议

1),因此您应 VS2015 或更早的VS来构建项目。

2),或者您可以手动将CppCodeProvider.dll添加到 VS2017 下的 GAC 中,然后在中进行构建> VS2017

解决方案

管理员身份运行 CMD ,然后运行:

cd C:\Program Files (x86)\Microsoft Visual Studio\2017\xxx\Common7\IDE\PublicAssemblies

gacutil /i Microsoft.VisualC.VSCodeProvider.dll

================================================ =

更新1

为什么VS2017的MSBuild会从VS2013调用任务dll是很奇怪的。

Microsoft.Build.CppTasks.Common,Version=12.0.0.0来自 VS2013

因此,请尝试以下步骤:

1)检查是否已定义名为VCTargetsPath的系统环境变量,并检查其值是否与VS2013相关。 无论如何,您应该删除该变量,然后重新启动VS再次进行测试。

2)还要尝试将这些dll注册到GAC:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Build.CPPTasks.Common.dll

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Build.CPPTasks.Common.dll

3)禁用扩展-> 管理扩展

下的任何第三方扩展

4)尝试repair VS或更新VS,以检查VS是否损坏。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...