Asp.net-Core

升級到 .NET Core 2.0:PackageTargetFallback 和 AssetTargetFallb…

  • August 8, 2017

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

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

這個錯誤的原因是什麼,如何解決重新建構項目?

在 .NET Core 1.0 和 1.1 中,需要PackageTargetFallback在引用已知可在 .NET Core 上執行但不正式支持它的包時進行設置 - 例如 PCL 庫或為舊dotnet框架名字對象建構的庫。

因此,項目 ( .csproj, .fsproj, …) 將包含類似於以下內容的行:

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

在大多數情況下,可以簡單地刪除此行並建構項目,因為 .NET Core 2.0 已經定義AssetTargetFallbacknet461- 這意味著任何與 .NET Framework 4.6.1 或更高版本兼容的 NuGet 包都可以在沒有額外配置的情況下使用。

如果這會引入更多建構/恢復錯誤,請將行更改為:

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

更改的原因是PackageTargetFallback被認為已棄用,應替換為AssetTargetFallback行為僅略有不同的。

工具中的重大變化是自動設置netcoreapp2.0與項目文件中定義的任何值衝突的地方。netstandard2.0``AssetTargetFallback``PackageTargetFallback

引用自:https://stackoverflow.com/questions/45569378