首页 > 解决方案 > 无法从 Microsoft.Build.Tasks.Core 实例化 ResolveComReference 任务

问题描述

我正在使用 MsBuild 15.0 API 来构建我们自己的项目。由于 GAC 中不存在此版本的 MsBuild,我不得不使用名为 MSBuildLocator 的库来加载 MsBuild 的程序集。当我想使用 COMReferences 构建项目时,出现以下错误:

无法从“Microsoft.Build.Tasks.Core,Version=15.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”实例化“ResolveComReference”任务。无法加载文件或程序集“Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)“ResolveComReference”任务已被错误地声明或使用,或在构造过程中失败。检查任务名称和程序集名称的拼写。

这是我的程序集绑定日志

Microsoft.Build.dll

LOG:此绑定在默认加载上下文中开始。LOG:使用应用程序配置文件:C:\Users\tfsbuild\Desktop\MSBuildTester\MSBuildTester\bin\Debug\MSBuildTester.exe.Config LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft 的机器配置文件。 NET\Framework\v4.0.30319\config\machine.config。日志:在应用程序配置文件中找到重定向:4.0.0.0 重定向到 15.1.0.0。日志:策略后参考:Microsoft.Build,版本=15.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a 日志:GAC 查找不成功。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build/Microsoft.Build.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.EXE。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build/Microsoft.Build.EXE。LOG:所有探测 URL 都已尝试并失败。

Microsoft.Build.Tasks.Core.dll

LOG:此绑定在 LoadFrom 加载上下文中开始。警告:将不会在 LoadFrom 上下文中探测本机图像。本机映像只会在默认加载上下文中进行探测,例如使用 Assembly.Load()。LOG:使用应用程序配置文件:C:\Users\tfsbuild\Desktop\MSBuildTester\MSBuildTester\bin\Debug\MSBuildTester.exe.Config LOG:使用主机配置文件:LOG:使用来自 C:\Windows\Microsoft 的机器配置文件。 NET\Framework\v4.0.30319\config\machine.config。日志:在应用程序配置文件中找到重定向:15.1.0.0 重定向到 15.1.0.0。日志:策略后参考:Microsoft.Build.Tasks.Core,版本=15.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a 日志:GAC 查找不成功。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.Tasks.Core.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.Tasks.Core/Microsoft.Build.Tasks.Core.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.Tasks.Core.EXE。日志:正在尝试下载新的 URL 文件:///C:/Users/tfsbuild/Desktop/MSBuildTester/MSBuildTester/bin/Debug/Microsoft.Build.Tasks.Core/Microsoft.Build.Tasks.Core.EXE。日志:尝试下载新的 URL 文件:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/MSBuild/15.0/Bin/Microsoft.Build.Tasks.Core.DLL。LOG:程序集下载成功。尝试设置文件:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll LOG:进入从源代码运行设置阶段。LOG:程序集名称是:Microsoft.Build.Tasks.Core,Version=15.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a LOG:Where-ref 绑定代码库与默认上下文中的内容不匹配。将结果保存在 LoadFrom 上下文中。LOG:绑定成功。从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll 返回程序集。LOG:程序集在 LoadFrom 加载上下文中加载。Where-ref 绑定代码库与默认上下文中的内容不匹配。将结果保存在 LoadFrom 上下文中。LOG:绑定成功。从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll 返回程序集。LOG:程序集在 LoadFrom 加载上下文中加载。Where-ref 绑定代码库与默认上下文中的内容不匹配。将结果保存在 LoadFrom 上下文中。LOG:绑定成功。从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll 返回程序集。LOG:程序集在 LoadFrom 加载上下文中加载。

我该如何解决?!

标签: c#msbuildmsbuild-task

解决方案


我刚刚在 VS 2019 的最新版本中得到了这个。自从前几天它成功编译后,我所做的只是添加了几行琐碎的代码——没有新的功能。我从调试模式切换到发布并构建了解决方案 - 没有变化。我切换回调试,问题就消失了!没有编码变化。

然后当我去实际调试项目时,错误又回来了!

后来发现 Visual Studio 很困惑。我卸载并重新安装它,问题就消失了。


推荐阅读