web-dev-qa-db-fra.com

Mise à niveau vers .NET Core 2.0: PackageTargetFallback et AssetTargetFallback ne peuvent pas être utilisés ensemble

Lors de la mise à niveau d'un projet qui compile et fonctionne correctement sous .NET Core 1.0 ou 1.1, mettez à jour le framework cible vers .NET Core 2.0 (netcoreapp2.0) provoque l'échec de la construction avec l'erreur suivante:

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

Quelle est la raison de cette erreur et comment peut-on résoudre le problème pour reconstruire le projet?

57
Martin Ullrich

Dans .NET Core 1.0 et 1.1, il était nécessaire de définir PackageTargetFallback pour référencer des packages dont on sait qu'ils fonctionnent sur .NET Core mais ne le prennent pas officiellement en charge - par exemple. Bibliothèques PCL ou bibliothèques construites pour l’ancien dotnet framework moniker.

Pour cette raison, le projet (.csproj, .fsproj, ...) contiendra une ligne semblable à:

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

Dans la plupart des cas, cette ligne peut simplement être supprimée et le projet doit être généré car .NET Core 2.0 définit déjà AssetTargetFallback comme étant net461 - ce qui signifie que tout package NuGet compatible avec .NET Framework 4.6.1 ou version ultérieure peut être utilisé sans configuration supplémentaire.

Si cela introduit plus d'erreurs de construction/restauration, modifiez la ligne en:

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

La raison de ce changement est que PackageTargetFallback est considéré comme obsolète et doit être remplacé par AssetTargetFallback, qui se comporte légèrement différemment.

Le changement radical dans l'outillage est que netcoreapp2.0 et netstandard2.0 définit automatiquement AssetTargetFallback, ce qui entre en conflit avec toute valeur PackageTargetFallback définie dans le fichier de projet.

104
Martin Ullrich