Il tipo o il nome dello spazio dei nomi non esiste [chiuso]


318

Ho un progetto WCF Data Service creato con Visual Studio 2010, che funzionava bene. Improvvisamente, non si è più compilato. Mi stava dando messaggi come:

Errore 7 Il tipo o il nome dello spazio dei nomi 'Servizi' non esiste nello spazio dei nomi 'System.Data' (manca un riferimento all'assembly?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. cs ...

Errore 8 Il tipo o il nome dello spazio dei nomi "Linq" non esiste nello spazio dei nomi "Sistema" (manca un riferimento all'assembly?) DependencyResolver.cs 3 14

Errore 10 Il tipo o il nome dello spazio dei nomi "Web" non esiste nello spazio dei nomi "System.ServiceModel" (manca un riferimento all'assembly?)

Errore 12 Impossibile trovare il tipo o il nome dello spazio dei nomi 'DataService' (manca una direttiva che utilizza o un riferimento di assembly?)

Come posso ripararlo?


4
anche dopo aver aggiunto quelli, i messaggi di errore rimangono ancora
Attilah

18
Questo mi è stato utile. Non so perché fosse chiuso.
utente gmail,

2
Penso che sia perché, sebbene le risposte siano state utili, la domanda originale è molto aperta e difficilmente si
riferirà

48
Ehi guarda! Una domanda utile su SO. Oh, aspetta, è fuori tema. Ma ha un numero enorme di voti e una risposta con ancora più voti. Qualcosa è certamente "spento" qui, ma non è questa domanda.
Jagd,

3
In che modo i ragazzi che hanno votato per chiudere questo hanno perso l'errore molto specifico nella domanda ("Il tipo o il nome dello spazio dei nomi non esiste nello spazio dei nomi")? Ho avuto un problema simile e ho cercato su Google quel messaggio di errore e questa domanda è stata il miglior risultato. Quindi la domanda non è affatto vaga.
Simon Tewsi,

Risposte:


619

Ho avuto lo stesso problema e ho dovuto impostare lo "Target Framework" di tutti i progetti allo stesso modo. Quindi ha costruito bene. Nel menu progetto, fare clic su Proprietà Nome progetto. Fai clic sulla scheda di compilazione. Fai clic su Opzioni di compilazione avanzate. Nel Framework di destinazione, selezionare il framework desiderato.


13
Ho impostato il "Target Framework" facendo clic con il tasto destro del mouse su Esplora soluzioni e selezionando Proprietà. Target Framework dovrebbe essere visibile nella scheda Applicazione predefinita.
Cookie

4
@jaminator Questa è una soluzione in alcuni casi. Almeno nel mio. Per qualche ragione, il mio progetto ha rifiutato di accettare uno spazio dei nomi esistente dalla stessa soluzione. Il problema era che l'applicazione console stava prendendo di mira il profilo client.
Amadiere

3
Funziona anche per me. Si è verificato durante l'aggiunta di un progetto WPF (profilo client .NET 4) e di un riferimento al progetto libreria di classi (.NET 4). Grazie mille !!
Tamas Ionut,

58
+1 a questo. Messaggio di errore orribilmente fuorviante. Probabilmente mi ha risparmiato ore di tentare di capirlo. Ehi Microsoft, che ne dici di "impossibile importare lo spazio dei nomi BLAH perché BLAH è una versione incompatibile", ma immagino che avrebbe derubato Nathan di 184 voti positivi.
Gerald Davis,

3
Esiste una soluzione alternativa per i casi in cui non è possibile modificare i framework Target dei progetti?
Raj123,

43

Ho riscontrato un problema con System.Linq non riconosciuto. L' usingaffermazione aveva una sfumatura rossa, ecc. Il modo in cui l'ho risolto è stato quello di cambiare il mio sito Web in target dotnet 3.5, quindi tornare al framework di destinazione originale (4.0 nel mio caso).


2
Ha funzionato anche per me! Ma ho dovuto farlo due volte ... vai a capire!
nicholeous,

Dopo aver unito manualmente alcuni file web.config di diversi framework di destinazione per la stessa app, web.config ha smesso di funzionare e ho ricevuto un errore del server interno 500. Dopo il ripristino come descritto, Visual Studio 2012 ha rimosso automaticamente alcune impostazioni precedenti da web.config, quindi l'app ha funzionato di nuovo.
humbads

Ha avuto un problema simile, penso che alcune versioni del framework non riconoscano System.Linqcome libreria valida
Callat,

3
Grazie. È ridicolo che questo argomento sia stato chiuso in quanto ciò mi ha aiutato anche dopo aver perso un'ora a cercare di capire perché la mia funzione e il mio riferimento hanno smesso di funzionare all'improvviso. Il riferimento che non è riuscito per me era system.management.automation.dll
Bbb

È stata davvero una magia. Proprio come il mio nuovo Mobile Honor 8X, in cui a volte la modifica delle impostazioni non ha effetto immediato. Affinché funzioni correttamente devo passare avanti e indietro più volte.
Harish NInge Gowda,

28

Ho scoperto che ciò è causato dal fatto che io abbia lo stesso nome dello spazio dei nomi del nome della classe (MyWorld.MyWorld = Namespace.ClassName ).

Cambia il tuo spazio dei nomi con un nome che non è lo stesso nome della tua classe e questo verrà compilato.

fonte


6
Per risolverlo basta Windows.Whateverglobal::
aggiungere

20

Ho riscontrato lo stesso problema con un sito ASP.NET MVC quando ho provato a utilizzare LINQ to SQL . Ho risolto il problema:

Esplora soluzioni -> Riferimenti -> Fare clic con il tasto destro su System.Data.Linq -> Copia locale (True)


17

Verifica che il tuo framework di destinazione abbia le stesse versioni .NET. Ho avuto lo stesso problema e la mia classe .NET era 3.5 e la soluzione web aveva 4.5. Ho sincronizzato quelli e poi ha funzionato :)


16
questo si limita a ripetere il punto fatto e spiegato nella risposta precedente che era stata pubblicata diversi mesi prima di questo
moscerino del

12

Ho avuto lo stesso problema e provato tutto quanto sopra senza successo, poi ho scoperto di cosa si trattava:

Avevo creato una cartella chiamata "Sistema" in uno dei miei progetti e poi creato una classe in esso. Il problema sembra derivare dall'avere uno spazio dei nomi chiamato "Sistema" quando viene creato il file .cs, anche se si trova in uno spazio dei nomi di "MyProject.System".

Guardando indietro, posso capire perché questo potrebbe causare problemi. All'inizio mi ha davvero sorpreso dato che i messaggi di errore inizialmente non sembrano riguardare il problema.


1
Ho avuto anche questo problema, per riferimento. Sarebbe bello se ci fosse un messaggio di errore più esplicativo nello strumento, ma vabbè.
Nick,

3
Ho pubblicato qualcosa su MSDN, ma MS ha detto che non era un bug. Non discuterò di questo, ma avrei sperato che avrebbero capito come potesse causare problemi.
GrandMasterFlush

1
Questo è inganno ...
Jitka Darbie Hübnerová,

12

Ho riscontrato lo stesso problema con System.Data.SQLite. La fonte del problema è che la dll che hai usato dovrebbe avere la stessa versione .NET con il tuo progetto.

Ad esempio, se hai usato (nel mio caso) SQLite per .NET 4.5, anche la tua piattaforma target dovrebbe essere .NET 4.5.

È possibile trovare il target della piattaforma in base a: Progetto> (nome progetto) Proprietà> Costruisci.


1
Questo ha risolto un problema che avevo appena avuto. Il messaggio di errore non è molto utile oltre a dirti quale DLL è il problema.
PointlessSpike

7

Nel mio caso il problema si stava verificando perché la classe che avevo creato aveva uno spazio dei nomi che interferiva con le classi esistenti. La nuova classe A aveva lo spazio dei nomi zz.yy.xx (per errore). I riferimenti agli oggetti in un altro spazio dei nomi yy.xx non venivano compilati nella classe A o in altre classi il cui spazio dei nomi era zz.

Ho cambiato lo spazio dei nomi della classe A in yy.xx, come avrebbe dovuto essere, e ha iniziato a funzionare.


5

PER CHIUNQUE CON FILE COLLEGATI: ho avuto questo problema e stavo usando Silverlight e il file offensivo che stava generando questo errore era un file collegato.

L'errore del compilatore mi ha detto che l'errore si stava verificando nel progetto in cui viveva il file. Si è scoperto che l'errore NON era in quel progetto, ma si stava verificando nel progetto che conteneva il file collegato. A quel progetto mancava un riferimento.


Ho avuto questo problema con il progetto .NET 4 utilizzando System.Management.Automation durante il test del progetto con Visual Studio 2013 su Windows 10. Aggiornamento del progetto a .NET 4.5.1 problema risolto.
Malcolm McCaffery,

2

Ho riscontrato questo problema durante l'utilizzo dell'integrazione Git di Visual Studio per gestire il progetto. Per qualche ragione il progetto Windows Phone 8 si compila bene quando si sceglie come target x86, ma quando lo imposto come target ARM, non riesce a compilare con un errore che indica che "Pubblicità" non esiste nello spazio dei nomi Microsoft.

Ho finito per risolvere il problema rimuovendo il riferimento Microsoft.Advertising. *. Dll e aggiungendolo di nuovo.


1

Nel mio caso non vi è stato alcun cambiamento nei progetti, si è semplicemente interrotto per la compilazione e con "il tipo o lo spazio dei nomi il nome XXX non esiste" e nella stessa classe lamentosa intellisense per quello spazio dei nomi / classe XXX funziona bene. Il problema era proprio nei riferimenti!

Passaggi per riprodurre:

  1. La soluzione ha ProjectA, ProjectB. ProjectA fa riferimento a log4net di terze parti ed è contrassegnato Copy local: true. ProjectB fa riferimento a ProjectA e non ha riferimenti a log4net. La soluzione viene compilata correttamente.

  2. Modifica in ProjectA: proprietà di riferimento per log4net in Copy local: false.

  3. Pulisci le cartelle bin e obj.
  4. Durante la compilazione, ProjectA si compila ma ProjectB si lamenta di non trovare lo spazio dei nomi ProjectA.

This is because ProjectB cartella bin mancante libreria di terze parti (log4net in my case)!

In questo caso la soluzione sarebbe:

  1. assicurarsi che i riferimenti alle librerie di terze parti siano impostati su Copy local: true o
  2. aggiungere il percorso a tali librerie nelle proprietà del progetto nel percorso di riferimento.

1

Mi riferisco a Microsoft.CommerceServer.Runtime.Orders e ho riscontrato questo errore. Questo progetto è vecchio e ha Target Framework .NET 2.0. In uscita ho avuto questo errore:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3268: The primary reference "Microsoft.CommerceServer.Runtime" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CommerceServer.Runtime" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

Ho semplicemente cambiato il framework di destinazione in .NET 4 e ora lo costruisce.


1

E se tutto il resto fallisce, ad esempio assicurando che i framework di destinazione siano gli stessi, e hai a che fare con una libreria di classi WPF in VS2010, riavvia semplicemente Visual Studio. Che ha fatto per me.


nel mio caso vs2010, un riferimento a dll ha un errore, ho letto il riferimento a dll e sembra fantastico, ma dopo aver creato il type namespace errorverificarsi. E riavvio Visual Studio, dopo il riavvio, l'errore dll originale viene visualizzato di nuovo, e l'ho letto di nuovo, e ricostruito, il successo.
yu yang Jian,

0

Ho riscontrato gli stessi errori. Dopo aver scoperto che il mio progetto aveva un nome assembly errato (ho copiato i file da un altro progetto e gli spazi dei nomi sono stati un po 'confusi) e l'ho cambiato di nuovo, il progetto è stato compilato correttamente.


Sottovalutato comunque, questo era il mio problema! Grazie.
SteveCav,

0

Ho ricevuto un messaggio di errore molto simile causato da inavvertitamente creato un duplicato di una classe in un altro progetto della mia soluzione. L'eliminazione del duplicato ha risolto il problema


0

Di recente ho dovuto eseguire un Ripristino configurazione di sistema e questo ha causato la modifica / scomparsa di molti dei miei file su cui avevo lavorato dal ripristino. Alcuni di questi erano file DLL. Ho usato il controllo del codice sorgente per recuperare l'intero progetto, ma avevo ancora un problema simile al precedente. Ho trovato questa risposta che ha descritto la necessità di rimuovere una DLL e di averla letta per correggere gli errori. Questo è stato il caso nel mio scenario.

Rimuovendolo WebMatrix.WebDatae leggendolo, nonché aggiungendo WebMatrix.Datarisolto il mio errore di The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....


-3

Eliminare il file .refresh.dll se si è sotto il controllo del codice sorgente. Quindi ricostruire. Dovrebbe funzionare. Questo ha funzionato per me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.