10 votes

Visual studio 2017 ne traite pas csproj comme un fichier de projet valide après la conversion de netstandard à framework

Ce qui suit a été réalisé dans VS Enterprise 2017 15.8.2. J'avais converti un projet .NET Framework (C#) en netstandard, puis j'ai dû le reconvertir en raison d'un problème de compilation. La conversion a été faite en restaurant un commit précédent de git. Cependant, maintenant VS ne reconnaît pas le projet comme un projet valide. Le projet de test unitaire lié génère l'avertissement suivant

le composant référencé '<nom du projet>' n'a pas pu être trouvé.

La tentative d'afficher les propriétés du projet produit l'erreur suivante

Une erreur s'est produite en essayant de charger la fenêtre des propriétés du projet. Fermez la fenêtre et réessayez. Membre non trouvé. (Exception de HRESULT : 0x80020003 (DISP_E_MEMBERNOTFOUND))

Les options de sélection de construction disparaissent du menu de construction et les options de construction/débogage disparaissent du menu contextuel du projet. Le nœud des dépendances de l'explorateur de solutions est vide. J'ai vu d'autres messages dans lesquels les gens décrivent une condition similaire qui est résolue soit en rouvrant la solution, soit en changeant le mode de vs à un autre type de développement ou en supprimant bin/obj. Aucune de ces solutions n'a fonctionné, pas plus qu'un redémarrage complet. Étant donné que ce fichier de projet était un framework, je soupçonne qu'il y a quelque chose de caché quelque part qui est couvert par mon .gitignore et qui doit être supprimé.

22voto

bbent Points 221

J'ai rencontré le même problème. Il semble que ce soit un problème avec le fichier de solution. J'ai supprimé le projet de la solution puis je l'ai réintroduit. Cela a permis à VS de le reconnaître comme le bon type de projet. J'espère que cela aidera quelqu'un d'autre à ne pas passer trop de temps sur ce problème.

5voto

jens Points 708

Une alternative de bas niveau à @bbent. Donne le même résultat final.

Ouvrez le fichier sln avec un éditeur de texte et spécifiez les éléments suivants GUIDE DU TYPE DE PROJET pour votre projet. le format est :

Format :

Project("<PROJECT-TYPE-GUID>") = "<proj name>", "<proj file path>", "<unique project guid>"
EndProject

Exemple pour un projet C# classique :

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibOne", "LibOne\LibOne.csproj", "{D5590E95-BFCC-4939-9D15-685D25B6BBE7}"
EndProject

Exemple pour netcore, projet respectif de type SDK :

Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibTwo", "LibTwo\LibTwo.csproj", "{D5590E95-BFCC-4939-9D15-685D25B6BBE7}"
EndProject

Le projet- type -guid est un GUID (défini par MS) qui représente ('c#', 'c++', 'xna', 'folder', 'web site', etc).

extrait :

C#          {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
folder      {2150E333-8FDC-42A3-9474-1A3956D46DE8}
core        {9A19103F-16F7-4668-BE54-9A1E7A4F7556}
wpf         {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}

Mais il n'y a rien d'officiel de la part de Microsoft ! La liste complète ne se trouve probablement que dans le code source de Visual Studio. Mais les identifiants ne changent pas, du moins pas au cours de la dernière décennie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X