Visual Studio 2017 ne peut pas mettre à jour le package Microsoft.NETCore.App («Bloqué par projet»)

J’ai une application de base dotnet qui cible Microsoft.NETCore.App 1.1.2. J’ai créé un projet de test pour tester ce projet, mais en construisant, j’ai remarqué cet avertissement: entrer la description de l'image ici

J’ouvre le gestionnaire de paquets NuGet et constate que l’avertissement est correct, que le projet testé a une version différente de Microsoft.NETCore.App: entrer la description de l'image ici entrer la description de l'image ici

Mon problème est que Visual Studio ne me laisse pas mettre à jour cette version, alors je ne comprends pas comment résoudre ce problème: entrer la description de l'image ici Idéalement, il suffit de cliquer sur le menu déroulant et de sélectionner la bonne version, mais Visual Studio affirme qu’il ne peut pas le faire en raison de «contraintes supplémentaires dans le projet ou dans packages.config». Comment suis-je censé mettre à jour ce paquet? Quelles sont les “contraintes supplémentaires” auxquelles Visual Studio fait référence?

Les références de package implicites que Microsoft.NET.Sdk infère ne peuvent pas être mises à jour via NuGet.

Si vous avez migré depuis project.json, le projet avec la référence 1.1.0 contient probablement

 1.1.0 

dans le fichier csproj ou un élément comme celui-ci (si vous avez déjà utilisé le gestionnaire de paquets pour définir la version):

  

Supprimez les entrées comme ci-dessus et tous les paquets référenceront 1.1.2 (ou peu importe ce que le SDK installé considère être le dernier) automatiquement. Alernativement, définissez RuntimeFrameworkVersion dans tous les projets.

J’ai eu le même problème en essayant d’installer le package Entityframework.Core dans une application Web .NET Core 2. Pour résoudre le problème, j’ai forcé l’installation via la console du gestionnaire de packages:

 Install-Package Microsoft.NETCore.App -Version 2.0.5 

(2.0.5 était la version la plus récente à l’époque)

J’espère que c’est utile. Paix.

Une autre solution possible. Dans le fichier csproj , mettez à jour l’ csproj cible avec la version que vous souhaitez mettre à niveau. Après avoir effectué le changement, comme indiqué ci-dessous, les packages peuvent être mis à niveau via le gestionnaire de packages NuGet.

Avant:

  netcoreapp2.0  

Après:

  netcoreapp2.1  

Réponse courte

Ajoutez une version explicite à la référence de package Microsoft.AspNetCore.App dans votre fichier .csproj.

Longue réponse

J’ai eu un nouveau projet netcoreapp2.1. Ce qui suit était dans le fichier .csproj. Notez qu’aucune version n’a été associée à la référence de package Microsoft.AspNetCore.App .

  ...  ...  

J’ai ajouté une référence explicite au package Microsoft.Extensions.Logging.Abstractions pour résoudre une incompatibilité de dépendance (erreur de génération). Micorsoft.AspNetCore.App voulait la version 2.1.0 de cette dépendance, mais un autre package voulait la version 2.1.1. Mon fichier .csproj ressemblait maintenant à ceci.

  ...   ...  

Cela a réduit l’erreur de génération à un avertissement sur Micorsoft.AspNetCore.App nécessitant la version 2.1.0 du package Microsoft.Extensions.Logging.Abstractions , mais la version 2.1.1 a bien sûr été résolue.

La tentative de mise à jour de Micorsoft.AspNetCore.App vers la version 2.1.1 pour corriger l’avertissement a été bloquée par le gestionnaire de packages, comme indiqué par l’OP.

J’ai mis à jour ma référence de package Micorsoft.AspNetCore.App pour utiliser explicitement la version 2.1.1 comme ceci.

  ...   ...  

Cela a corrigé l’avertissement de génération et débloqué toutes les versions de Microsoft.AspNetCore.App dans le Gestionnaire de packages. J’ai même pu supprimer la référence explicite à Microsoft.Extensions.Logging.Abstractions sans réintroduire l’erreur d’origine. Le .csproj final ressemblait à ceci sans problèmes.

  ...  ...  

Pour moi en ajoutant

 true 

fait le tour

  netcoreapp2.1 false true  

Je l’ai résolu simplement en cliquant avec le bouton droit de la souris sur Projet (ou ALT + Entrée) -> Propriétés -> Application -> Framework cible (choisissez Framework .NET (dans ce cas 1.1))