web-dev-qa-db-fra.com

Erreur de construction lors de la transition entre les branches: votre projet ne fait pas référence au framework ".NETFramework, Version = v4.7.2"

Nous utilisons Git et nous avons une solution qui cible l’ensemble du réseau. Il y a quelques jours, j'ai commencé à migrer la solution vers .net Core. Malheureusement, quelque chose s'est produit qui m'a fait revenir à la branche master (qui contient le code pour le framework .NET complet). Chaque fois que j'essaie de créer l'application, j'obtiens l'erreur suivante:

1> D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets (186,5): erreur: votre projet ne fait pas référence à Cadre ".NETFramework, Version = v4.7.2". Ajouter une référence à ".NETFramework, Version = v4.7.2" dans la section "frameworks" de votre project.json, puis réexécutez la restauration NuGet.

J'ai essayé de nettoyer les paquets de pépites, d'exécuter une réinitialisation de git, mais rien ne semble aider. Une idée sur ce qui se passe?

10
Luis Abreu

J'ai eu un problème similaire lors de la mise à niveau de certains projets de 4.6.2 à 4.7.2 - c'est arrivé à la fois pour notre infrastructure cible ASP.Net Core et pour notre solution WPF. 

Initialement, il semblait que ce fussent des projets aléatoires qui avaient cette erreur, d’autres projets avec pratiquement le même csproj se construisaient bien et d’autres échouaient. La 'relance de la restauration de NuGet' dans le message m'a également envoyé sur le mauvais chemin (certains de ces projets n'avaient même pas de références NuGet ...)

Le problème semble provenir du dossier projects obj contenant un fichier project.assets.json. Je ne sais pas quand cela a été généré - des reliques du passé, et le nettoyage du projet ne le supprime pas. Le fichier pointe vers le framework précédent, dans mon cas 4.6.2 - La suppression manuelle des dossiers bin/obj de chaque projet qui ne construirait pas et ne reconstruirait pas a résolu cette erreur pour moi. Cela expliquerait également pourquoi, lorsque j'ai cloné le dépôt pour ma santé mentale, il a également bien fonctionné.

19
MaxJ

On dirait que certaines bibliothèques ne sont pas compatibles avec Core. Si Nuget s'attend/a besoin de la version 4.7.2, il est probable que quelque chose la cible toujours, que ce soit dans votre projet ou dans une bibliothèque. Cela expliquerait également pourquoi le nettoyage et la restauration des paquets Nuget ne résolvent pas le problème si le paquet que vous restaurez cible toujours 4.7.2.

Remarque connexe, êtes-vous sûr d'utiliser la dernière structure de projet? J'ai remarqué que votre message d'erreur inclut project.json, qui était obsolète au profit du nouveau format csproj; plus d'infos est ici si c'est pertinent. Je ne suis pas au courant d'une situation dans laquelle vous obtiendriez un message d'erreur à propos de project.json et que la solution n'aurait pas eu project.json.

1
JosephRT