【问题标题】:ResolveComReference task could not be loaded无法加载 ResolveComReference 任务
【发布时间】:2017-05-22 18:21:44
【问题描述】:

Win7,VS2017,ASP Net core app,目标框架为4.6。

当我尝试使用 CLI 构建我的项目时(在调用 dotnet 命令之前需要它)发生错误:

C:...\Microsoft.Common.CurrentVersion.targets(2547,5):错误 MSB4062: “Microsoft.Build.T asks.ResolveComReference”任务不能 从程序集加载 Microsoft.Build.Tasks.Core,版本 = 15.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a。确认 声明是正确的,即大会及其所有 依赖项可用,并且任务包含公共类 实现 Microsoft.Build.Framework .ITask。 [C:\project.csproj]

我一直在寻找与我的问题相关的问题,并做了以下事情:

  • 重启VS
  • 使用 VS 工具清理并构建项目(已成功)
  • 加载 Microsoft.Build 包
  • 删除包文件夹的内容并重新加载它

但没有什么能帮到我。

它可能是什么?

【问题讨论】:

  • 当您编写“使用 CLI 构建”时,您的意思是 dotnet cli 吗? (例如dotnet build
  • @Martin Ullrich,是的,当我使用诸如“dotnet ef migrations add qwe”之类的 CLI 命令时会出现此错误

标签: .net visual-studio visual-studio-2017


【解决方案1】:

.NET CLI 使用的 MSBuild 的 .net 核心版本不支持 COM 引用。要使这些参考有效,您必须直接使用 msbuild 构建您的项目。使用 Visual Studio 2017 的开发人员命令提示符,您应该能够使用以下命令执行构建:

msbuild /t:Restore
msbuild /t:Build /p:Configuration=Release
msbuild /t:Publish /p:Configuration=Release

(您也可以添加/m 以启用并行构建)。

在运行使用这些项目文件的 CLI 工具时也不支持此引用,因为它们也依赖于 .NET Core 版本的 MSBuild。

但是,有一种解决方法可以使 CLI 工具能够使用该项目,但它不允许它们使用 .NET Cli 完全构建。在使用 .NET Core 版本的 MSBuild 构建时,将以下 Condition 属性添加到您的 ComReference 项目以“隐藏” COM 引用:

<COMReference Include="FooBar" Condition="'$(MSBuildRuntimeType)' != 'Core'">
  <Guid>{some-guid}</Guid>
  <!-- a lot more metadata elements -->
</COMReference>

【讨论】:

  • 谢谢,马丁,你的回答对我很有帮助。我打开了我的 .csproj 文件,并在那里找到了一些 com 引用(COMReference 部分)。只需删除这些部分就是一种解决方案
  • 可能取决于你的项目是否真的需要那些 COM 引用..
  • 相关github issue.
  • 这只是给了我缺少类型的编译错误
  • @MartinUllrich 谢谢,经过大量的努力,我终于完成了编辑项目文件并评论了 ommRef.. secion
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 2018-01-28
  • 2017-10-22
  • 2013-12-19
  • 2015-09-26
  • 2012-03-19
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多