Visual Studio 2010 improvvisamente non può vedere lo spazio dei nomi?

La soluzione My C # WinForms ha due progetti. Una DLL che è il progetto principale su cui sto lavorando e un WinForms eseguibile che chiamo “Sandbox” in modo da poter compilare / eseguire / eseguire il debug della DLL facilmente in una volta sola.

Sto lavorando in .Net 4.0 per entrambi i progetti.

Tutto stava funzionando bene fino a quando ho aggiunto un codice apparentemente innocente e un riferimento a System.Web nella DLL. Ora il mio progetto Sandbox non può vedere lo spazio dei nomi del progetto DLL. Non ho cambiato nulla che credo avrebbe dovuto influire su questo.

Se cancello il riferimento del progetto alla DLL dai riferimenti Sandbox e lo aggiungo nuovamente, le sottolineature rosse scompaiono e la codifica dei colors ritorna per tutte le mie classi ecc; ma non appena provo a build la soluzione, l’intera cosa cade di nuovo in pezzi.

Quando faccio clic con il pulsante destro del mouse sul progetto DLL nei riferimenti e nella vista di Sandbox nel browser degli oggetti, posso vedere lo spazio dei nomi e tutto il resto.

Ho la sensazione che questa potrebbe essere una specie di bug?

È una specie di bug VS2010? Ho avuto questo stesso problema alcuni mesi fa e ho potuto risolverlo solo facendo un nuovo progetto e re-importando i miei file. Questa volta, tuttavia, ho un file di bajillion e lo farò solo come ultima risorsa!

Edit: Dopo aver attraversato il panico e aver annullato tutte le mie modifiche, cercando di scoprire cosa ha causato i problemi, sembra che questa sia la linea:

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

Se commento questa riga, allora non ricevo errori nello spazio dei nomi e il progetto si integra perfettamente. Non riesco però a vedere niente di sbagliato in questa linea.

Sono pronto a dichiarare questo bug in VS2010, questo ha già morso troppi programmatori. La correzione è semplice: Progetto + Proprietà, scheda Applicazione, modifica di Target Framework su “.NET Framework 4” anziché il profilo cliente selezionato per impostazione predefinita.

System.Web non è incluso nel profilo del cliente. Avere questa opzione in primo luogo è abbastanza sciocca, il profilo del client è solo il 15% più piccolo rispetto alla versione completa di .NET 4.0. Averlo selezionato di default è ancora più sciocco. Ma sto divagando.

AGGIORNAMENTO: per fortuna tutto questo è stato risolto in VS2012. Che non rende più il profilo del cliente l’impostazione predefinita per un nuovo progetto. E il profilo del cliente si è ritirato completamente in .NET 4.5, buona liberazione.

Verifica che entrambi i progetti utilizzino il profilo non client per il loro framework di destinazione (vai alle proprietà di ogni progetto per farlo).

Una possibilità è che la versione di .NET Framework di destinazione della libreria di classi sia superiore a quella del progetto. Ho affrontato questo problema e l’ho risolto chiudendo lo studio visivo, riaprendo lo studio visivo, pulendo e ricostruendo la soluzione. Questo ha funzionato per me. In alcuni altri post ho letto le risposte e la maggior parte degli utenti ha risolto il problema seguendo questa strada.

Prova a creare solo il progetto con la sandbox dll prima in modo indipendente.

Quindi indirizzare il progetto eseguibile alla DLL richiesta e assicurarsi che copy local sia impostato su true . nelle impostazioni di riferimento.

Quindi crea il progetto eseguibile.

La modifica del framework di destinazione dal “.NET Framweork 4 Client Profile” a “.NET Framework 4” ha funzionato per me con un problema simile. Sono d’accordo sul fatto che il profilo del cliente non sembra avere un grande vantaggio nell’usarlo. Mi sembra di essere inchiodato con strani errori che cerco fino a quando non ricordo che Visual Studio ha come predefinito il profilo del client. Immagino che la morale della storia quando si verifica un errore sia: se “Ricostruisci la soluzione” non funziona, controlla il framework di destinazione …

Se hai già provato il cambiamento del Framework e non hai ancora funzionato, spero che questo funzioni per te (come ha fatto per me): aggiungi semplicemente i riferimenti necessari all’interno dei tuoi progetti. Molto ovvio ma stavo sbagliando fino a quando ho trovato qual era il problema.

Ho appena avuto questo problema e si è scoperto che ho utilizzato più spazi dei nomi con lo stesso nome object (ovvero gli oggetti business avevano lo stesso nome dei modelli mvc);

Completamente qualificando i nomi ho risolto il problema per me.