2017-08-08 90 views
35

當升級在.NET Core 1.0或1.1上編譯並運行良好的項目時,將目標框架更新爲.NET Core 2.0(netcoreapp2.0)會導致構建失敗,出現以下錯誤:升級到.NET Core 2.0:PackageTargetFallback和AssetTargetFallback不能一起使用

error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. 

,這是什麼錯誤的原因,以及如何解套再次使該項目建設?

回答

62

在.NET Core 1.0和1.1中,當引用已知可在.NET Core上工作但尚未正式支持的軟件包時,需要設置PackageTargetFallback。爲傳統dotnet框架名字對象構建的PCL庫或庫。

由於這個原因,該項目(.csproj.fsproj ...)將包含類似於行:

<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback> 

在大多數情況下,這條線可以簡單地刪除該項目應該因爲建立。 NET Core 2.0已經將AssetTargetFallback定義爲net461--這意味着可以使用與.NET Framework 4.6.1或更高版本兼容的任何NuGet包,而無需其他配置。

如果引入更多的編譯/還原錯誤,將該行更改爲:

<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> 

的原因的變化是PackageTargetFallback被視爲過時,應該用AssetTargetFallback其行爲只是略有不同所取代。

工具中的突破性變化是netcoreapp2.0netstandard2.0自動設置爲AssetTargetFallback,與項目文件中定義的任何PackageTargetFallback值衝突。

+7

謝謝,我在編輯器中打開了csproj,完全按照您的建議刪除了元素,它工作得很好。 – amassani

相關問題