2017-05-22 133 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引用.. –

相關問題