wake-up-neo.com

Upgrade auf .NET Core 2.0: PackageTargetFallback und AssetTargetFallback können nicht zusammen verwendet werden

Wenn Sie ein Projekt aktualisieren, das in .NET Core 1.0 oder 1.1 kompiliert und ordnungsgemäß ausgeführt wird, aktualisieren Sie das Zielframework auf .NET Core 2.0 (netcoreapp2.0) führt dazu, dass der Build mit dem folgenden Fehler fehlschlägt:

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

Was ist der Grund für diesen Fehler und wie kann er behoben werden, damit das Projekt erneut erstellt wird?

57
Martin Ullrich

In .NET Core 1.0 und 1.1 musste PackageTargetFallback festgelegt werden, wenn auf Pakete verwiesen wurde, von denen bekannt ist, dass sie auf .NET Core funktionieren, diese jedoch offiziell nicht unterstützen - z. PCL-Bibliotheken oder Bibliotheken, die für den älteren Framework-Moniker dotnet erstellt wurden.

Aus diesem Grund enthält das Projekt (.csproj, .fsproj, ...) eine Zeile ähnlich der folgenden:

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

In den meisten Fällen kann diese Zeile einfach entfernt werden und das Projekt sollte erstellt werden, da .NET Core 2.0 bereits definiert, dass AssetTargetFallbacknet461 Ist - was bedeutet, dass jedes NuGet-Paket das ist ist kompatibel mit .NET Framework 4.6.1 oder höher kann ohne zusätzliche Konfiguration verwendet werden.

Wenn dies zu weiteren Erstellungs-/Wiederherstellungsfehlern führt, ändern Sie die Zeile in:

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

Der Grund für die Änderung ist, dass PackageTargetFallback als veraltet gilt und durch AssetTargetFallback ersetzt werden sollte, das sich nur geringfügig anders verhält.

Die entscheidende Änderung bei den Werkzeugen ist, dass netcoreapp2.0 Und netstandard2.0 Automatisch AssetTargetFallback setzen, was mit einem in der Projektdatei definierten PackageTargetFallback -Wert in Konflikt steht.

104
Martin Ullrich