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

Lors de la mise à niveau d'un projet en cours de compilation et fonctionnant correctement sur. NET Core 1.0 ou 1.1, la mise à jour du 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-il être résolu pour que le projet soit à nouveau construit?

47
demandé sur Martin Ullrich 2017-08-08 16:14:04

1 réponses

Dans. NET Core 1.0 et 1.1, il était nécessaire de définir PackageTargetFallback lors du référencement de paquets connus pour fonctionner sur.net Core mais qui ne le supportent pas officiellement - par exemple, les bibliothèques PCL ou les bibliothèques construites pour l'ancien nom de framework dotnet.

Pour cette Raison, le projet (.csproj, .fsproj, ...) contiendra une ligne similaire à:

<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 construit Car. Net Core 2.0 définit déjà AssetTargetFallback comme net461 - ce qui signifie que tout paquet NuGet compatible avec. NET Framework 4.6.1 ou supérieur peut être utilisé sans configuration supplémentaire.

Si cela introduit d'autres erreurs de construction / restauration, remplacez la ligne par:

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

La raison du changement est que PackageTargetFallback est considéré comme obsolète et devrait être remplacé par AssetTargetFallback qui ne se comporte que légèrement différent.

Le changement de rupture dans l'outillage est que netcoreapp2.0 et netstandard2.0 définissent automatiquement AssetTargetFallback qui est en conflit avec n'importe quelle valeur PackageTargetFallback défini dans le fichier de projet.

89
répondu Martin Ullrich 2018-05-19 12:49:56