J'ai l'avertissement suivant
Severity Code Description Project File Line Suppression State
Warning NETSDK1071 A PackageReference to 'Microsoft.AspNetCore.App' specified a Version of `2.1.6`. Specifying the version of this package is not recommended. For more information, see https://aka.ms/sdkimplicitrefs MyApi C:\Program Files\dotnet\sdk\2.2.102\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 153
J'ai essayé de supprimer la référence en modifiant le fichier de projet, puis en ajoutant le package nuget, mais lorsque je l'ai fait, de nombreuses références ne fonctionnaient plus correctement.
Je note que l'erreur mentionne sdk\2.2 que j'ai installé récemment sur mon ordinateur, mais il n'y est pas fait référence dans le fichier de projet.
J'utilise VS2017 15.9.5
Il y a plusieurs façons de contourner cela.
PackageReference
mais supprimez l'attribut Version
, cela devrait faire disparaître l'avertissement. C'est parce qu'il s'agit d'un métapaquet , qui (simplement) est un type de package qui obtient la version en fonction de la version de votre framework, plus ici: - https://docs.Microsoft.com/en-us/dotnet/core/packages#metapackagesPackageReference
pour désactiver les avertissements, plus ici: https://github.com/dotnet/sdk/issues/2602J'ai rencontré une situation similaire en créant un nouveau projet de test xUnit (.NET Core). Lorsque j'ai ajouté une référence à un projet d'application Web ASP.NET Core existant, j'ai obtenu:
Microsoft.Common.CurrentVersion.targets (2106,5): avertissement MSB3277 : Conflits trouvés entre différentes versions de:
- Microsoft.AspNetCore.Authorization
- Microsoft.AspNetCore.Cors
- Microsoft.AspNetCore.Diagnostics.Abstractions
- Microsoft.AspNetCore.Mvc
- Microsoft.AspNetCore.Mvc.Abstractions
- Microsoft.AspNetCore.Mvc.Core
- Microsoft.AspNetCore.Mvc.Formatters.Json
- Microsoft.AspNetCore.Mvc.RazorPages
- Microsoft.AspNetCore.Mvc.ViewFeatures
- Microsoft.AspNetCore.Razor.Runtime
- Microsoft.AspNetCore.Routing
J'ai éliminé ces conflits de version en ajoutant le Microsoft.AspNetCore.App
à mon projet de test xUnit.
À ce stade, j'ai commencé à recevoir le avertissement de référence de version explicite ( NETSDK1071 ).
NuGet Package Manager et Package Manager Console dans Visual Studio ajoutent tous deux l'attribut de version à Microsoft.AspNetCore.App lors de l'installation du package. Vous pouvez supprimer l'attribut de version en modifiant votre fichier .csproj. Cela devrait éliminer l'avertissement NETSDK1071.
Notez que si vous supprimez l'attribut de version, NuGet Package Manager désactivera les boutons [Désinstaller] + [Mettre à jour] et indiquera: "- référencé implicitement par un SDK .. . ".
À ce stade, je ne reçois aucun avertissement.
Il y a beaucoup de bavardages et quelques tldr; documentation relative à ce problème. FWIW, voici quelques ressources succinctes qui méritent selon moi d'être soulignées:
métapaquet Microsoft.AspNetCore.App pour ASP.NET Core 2.1 ou version ultérieure
@nguerrera a très bien résumé la situation:
C'est pour tous les tests, ou même tous les projets non Web qui ont une référence à un projet Web. Ce n'est pas vraiment une solution de contournement dans la mesure où la référence Web ne s'est pas écoulée de manière transitoire dans .NET Core 2.x. Vous devez l'ajouter et vous devez l'ajouter sans la version afin que le SDK puisse choisir la bonne version pour éviter les conflits.
Meilleure nouvelle: à partir de .NET Core 3.0, la référence Web circulera de manière transitoire et vous pouvez référencer un projet Web à partir d'un projet de test sans aucune autre étape. Je ferme donc cela. La conception de 2.x ne peut pas être modifiée, mais nous avons spécifiquement conçu les choses dans 3.0 pour avoir des références de cadre transitives, et c'était un scénario motivant pour cela.
Et voici quelques tldr; conversations:
Ne couvre pas Microsoft.AspNet.Core.All # 8691
Conflits de version dans le projet de test en fonction d'un projet Microsoft.AspNetCore.App # 225