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?
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.