web-dev-qa-db-fra.com

Visual Studio 2010 ne peut tout à coup pas voir l'espace de noms?

Ma solution WinForms en C # a deux projets . Un DLL qui est le projet principal sur lequel je travaille et un WinForms exécutable que j'appelle "Sandbox" afin de pouvoir compiler/exécuter/déboguer le DLL facilement en une seule fois.

Je travaille dans .Net 4.0 pour les deux projets.

Tout fonctionnait bien jusqu'à ce que j'ajoute du code apparemment innocent et une référence à System.Web dans la DLL . Maintenant, mon projet Sandbox ne peut pas voir l'espace de noms du projet DLL. Je n'ai rien changé qui, à mon avis, aurait dû avoir une incidence sur cela.

Si je supprime la référence du projet à la balise DLL dans le bac à sable et la rajoute, le soulignement rouge disparaît et le code de couleur revient pour toutes mes classes, etc. mais dès que j'essaie de construire la solution, tout s'effondre à nouveau.

Lorsque je clique avec le bouton droit de la souris sur le projet DLL dans les références du bac à sable et que je le visualise dans le navigateur d'objets, je peux voir l'espace de noms et tous les éléments qu'il contient.

J'ai l'impression que cela pourrait être une sorte de bogue?

Est-ce une sorte de bogue VS2010? J'ai eu le même problème il y a quelques mois et je ne pouvais le résoudre qu'à l'époque en créant un tout nouveau projet et en réimportant mes fichiers. Cependant, cette fois-ci, j’ai des millions de dossiers et je ne le ferai qu’en dernier recours!

Edit: Après avoir paniqué et annulé toutes mes modifications, en essayant de trouver la cause des problèmes, il semble que ce soit la ligne suivante:

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

Si je commente cette ligne, je n’obtiens aucune erreur d’espace de nom et le projet se construit bien. Je ne vois rien de mal avec cette ligne cependant.

83
Ozzah

Je suis prêt à déclarer que c'est un bogue dans VS2010, cela a déjà fait beaucoup trop de programmeurs. Le correctif est simple: Projet + Propriétés, onglet Application, remplacez Target Framework par ".NET Framework 4" au lieu du profil client sélectionné par défaut.

System.Web n'est pas inclus dans le profil du client. Avoir cette option en premier lieu est assez ridicule, le profil du client n’est que 15% plus petit que la version complète de .NET 4.0. Le faire sélectionner par défaut est encore plus ridicule. Mais je m'égare.

MISE À JOUR: heureusement, tout cela a été corrigé dans VS2012. Ce qui ne fait plus du profil client le profil par défaut pour un nouveau projet. Et le profil du client s'est complètement retiré dans .NET 4.5, bon débarras.

149
Hans Passant

Vérifiez que les deux projets utilisent le profil non-client pour leur infrastructure cible (accédez aux propriétés de chaque projet pour le faire).

8
Mark Avenius

Une possibilité est que la version .NET Framework cible de la bibliothèque de classes soit plus élevée que celle du projet ..__ J'ai rencontré ce problème et je l'ai résolu en fermant visual studio, en rouvrant visual studio, en nettoyant et en reconstruisant la solution. Cela a fonctionné pour moi. Sur d'autres articles, j'ai lu les réponses et la plupart des utilisateurs ont résolu le problème en suivant cette procédure.

2
Muhammad Sohail

Essayez de ne créer que le projet avec la DLL Sandbox en premier. 

Ensuite, pointez votre projet exécutable sur la dll requise et assurez-vous que copy local est défini sur true. dans les paramètres de référence. 

Puis construisez le projet exécutable.

1
Robin Maben

Si vous avez déjà essayé d'effectuer le changement de Framework et que vous n'avez toujours pas travaillé, j'espère que cela fonctionnera pour vous (comme cela a été le cas pour moi): ajoutez simplement les références nécessaires dans vos projets. Très évident mais je le faisais mal jusqu'à ce que j'ai trouvé quel était le problème.

0
lu1s

Je viens d'avoir ce problème et il s'est avéré que j'utilisais plusieurs espaces de nom portant le même nom d'objet (c'est-à-dire que les objets métier avaient les mêmes noms que les modèles mvc);

La qualification complète des noms a résolu le problème pour moi.

0
Mike Cheel

Changer le framework cible du "profil client .NET Framweork 4" en ".NET Framework 4" a fonctionné pour moi avec un problème similaire. Je conviens que le profil du client ne semble pas avoir beaucoup d’avantage à l’utiliser. Il me semble que j'ai des erreurs étranges que je recherche jusqu'à ce que je me souvienne que Visual Studio utilise par défaut le profil du client. J'imagine que la morale de l'histoire lorsque l'on obtient une erreur est la suivante: si "Rebuild Solution" ne fonctionne pas, vérifiez le framework Target ...

0
Andy