2017-05-22 316 views
3

Win7,VS2017,ASP网络核心应用,目标框架为4.6。ResolveComReference任务无法加载

当我尝试建立我的项目,CLI(这是DOTNET命令调用之前需要)发生错误:

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

我一直在寻找与我的问题相关的问题,也做了以下几件事:

  • 重启VS
  • 干净,建立与VS工具项目(这是成功地)
  • 负载Microsoft.Build包的包的文件夹的
  • 删除内容,并重新加载其

但没有什么可以帮助我。

它可能是什么?

+0

当你写“建立与CLI”,你的意思是'dotnet' CLI ? (例如'dotnet build') –

+0

@Martin Ullrich,是的,当我使用CLI命令如'dotnet ef migrations add qwe'时发生这个错误。 – Mergasov

回答

3

.NET引用不支持.net核心版本的MSBuild,它是.NET CLI使用的。对于那些需要工作的参考,你必须直接使用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

谢谢,马丁,你的回答对我很有帮助。我打开了我的 .csproj文件,并在那里找到了一些com参考(COMReference部分)。只是删除这些部分是一个解决方案 – Mergasov

+0

可能取决于您的项目是否实际需要这些COM引用.. –

相关问题