无法加载ResolveComReference任务

问题描述 投票:0回答:2

Win7、VS2017、ASP Net core应用程序,目标框架为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 包
  • 删除包文件夹的内容并重新加载它

但是没有什么可以帮助我。

它可能是什么?

.net visual-studio visual-studio-2017
2个回答
24
投票

MSBuild 的 .net core 版本不支持 COM 引用,而 .NET CLI 使用的是 MSBuild。为了使这些引用起作用,您必须直接使用 msbuild 构建项目。使用 Visual Studio 2017 的开发人员命令提示符,您应该能够使用以下命令执行构建:

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

(您还可以添加

/m
以启用并行构建)。

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

但是,有一个解决方法可以使 CLI 工具能够使用该项目,但不允许它们使用 .NET Cli 完全构建。将以下

Condition
属性添加到
ComReference
项,以在使用 .NET Core 版本的 MSBuild 构建时“隐藏”COM 引用:

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

0
投票

我遇到了同样的问题,互联网上的答案都没有帮助解决它。最后我在服务器上安装了 Visual Studio,我在错误列表中看到缺少 nuget 包! (缺少程序集错误),尽管 nuget 包存在。

然后我卸载并安装 nuget 包,错误就消失了。我进入 GitChanges 查看发生了什么变化,我发现在 .csproj 文件中,对本应位于另一个文件夹中的 nugetpackage 的引用是错误的。 使用 VS 重新安装 nuget 包修复了地址。

© www.soinside.com 2019 - 2024. All rights reserved.