c# - 无法从 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 加载上下文中加载。
我该如何解决?!
解决方案
我刚刚在 VS 2019 的最新版本中得到了这个。自从前几天它成功编译后,我所做的只是添加了几行琐碎的代码——没有新的功能。我从调试模式切换到发布并构建了解决方案 - 没有变化。我切换回调试,问题就消失了!没有编码变化。
然后当我去实际调试项目时,错误又回来了!
后来发现 Visual Studio 很困惑。我卸载并重新安装它,问题就消失了。
推荐阅读
- javascript - 如何正确模拟套接字连接以模拟各种 on.('data' 事件
- c# - BitArray 初始化为 0 的时间复杂度是多少?
- python - 从外部服务器传递 webhook 时,Watson Assistant 给出错误 [任何地方都没有答案]
- python - 通过 Regex 和 Maxsplit 拆分字符串会返回多个拆分
- java - 如何使用 Spring Data JPA 正确外部化本机 SQL 查询
- java - 更改列表中的单元格的功能
- c++ - myComboBox->Dismiss(); 在 wxEVT_TEXT 和 wxEVT_COMBOBOX_DROPDOWN 下不工作
- php - Laravel 8 用户表列名
- r - 用于 R 中 misc3d 的数据帧到数组
- sml - 错误 SML:错误:未绑定的变量或构造函数:valof