Typ- oder Namespace-Name existiert nicht [geschlossen]

318

Ich habe ein WCF Data Service-Projekt mit Visual Studio 2010 erstellt, das einwandfrei funktioniert hat. Plötzlich wurde es nicht mehr kompiliert. Es gab mir Nachrichten wie:

Fehler 7 Der Typ- oder Namespace-Name 'Services' ist im Namespace 'System.Data' nicht vorhanden (fehlt eine Assemblyreferenz?) C: \ U ... s \ Visual Studio 2010 \ Projects ... \ DataService. cs ...

Fehler 8 Der Typ- oder Namespace-Name 'Linq' ist im Namespace 'System' nicht vorhanden (fehlt eine Assembly-Referenz?) DependencyResolver.cs 3 14

Fehler 10 Der Typ- oder Namespace-Name 'Web' ist im Namespace 'System.ServiceModel' nicht vorhanden (fehlt eine Assemblyreferenz?)

Fehler 12 Der Typ- oder Namespace-Name 'DataService' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Wie kann ich es reparieren?

Attilah
quelle
4
Auch nach dem Hinzufügen bleiben die Fehlermeldungen bestehen
Attilah
17
Das war nützlich für mich. Ich weiß nicht, warum es geschlossen war.
Google Mail-Benutzer
2
Ich denke, es liegt daran, dass die ursprüngliche Frage, obwohl die Antworten nützlich waren, sehr offen ist und sich wahrscheinlich nicht auf andere bezieht, obwohl die Antworten dies tun
WongKongPhooey
48
Guck mal! Eine nützliche Frage zu SO. Oh, warte, es ist nicht zum Thema. Aber es gibt eine große Anzahl von Upvotes und eine Antwort mit noch mehr Upvotes. Hier ist sicherlich etwas "aus", aber es ist nicht diese Frage.
Jagd
3
Wie haben die Leute, die dafür gestimmt haben, dies zu schließen, den sehr spezifischen Fehler in der Frage übersehen ("Der Typ- oder Namespace-Name existiert nicht im Namespace")? Ich hatte ein ähnliches Problem und googelte diese Fehlermeldung und diese Frage war das Top-Ergebnis. Die Frage ist also überhaupt nicht vage.
Simon Tewsi

Antworten:

617

Ich hatte das gleiche Problem und musste das "Ziel-Framework" aller Projekte so einstellen, dass es gleich ist. Dann baute es gut. Klicken Sie im Menü Projekt auf Eigenschaften des Projektnamens. Klicken Sie auf die Registerkarte Kompilieren. Klicken Sie auf Erweiterte Kompilierungsoptionen. Wählen Sie im Ziel-Framework das gewünschte Framework aus.

Nathan Koop
quelle
13
Ich setze das "Ziel-Framework", indem ich im Solution Explorer mit der rechten Maustaste auf das Projekt klicke und Eigenschaften auswähle. Das Zielframework sollte auf der Registerkarte "Standardanwendung" angezeigt werden.
Cookie
4
@jaminator Dies ist in einigen Fällen eine Lösung. Zumindest bei mir. Aus irgendeinem Grund weigerte sich mein Projekt, einen Namespace zu akzeptieren, der aus derselben Lösung stammt. Das Problem war, dass die Konsolenanwendung auf das Clientprofil abzielte.
Amadiere
3
Funktioniert auch bei mir. Trat auf, als ich ein WPF-Projekt (.NET 4-Clientprofil) und eine Klassenbibliotheksprojektreferenz (.NET 4) hinzufügte. Vielen Dank !!
Tamas Ionut
58
+1 dazu. Schrecklich irreführende Fehlermeldung. Wahrscheinlich habe ich mir Stunden erspart, um es herauszufinden. Hey Microsoft, wie wäre es mit "Der Namespace BLAH kann nicht importiert werden, weil BLAH eine inkompatible Version ist", aber dann hätte es Nathan wohl 184 Upvotes geraubt.
Gerald Davis
3
Gibt es eine Problemumgehung für Fälle, in denen wir die Ziel-Frameworks der Projekte nicht ändern können?
Raj123
43

Ich hatte ein Problem damit, dass System.Linq nicht erkannt wurde. Die usingAussage hatte einen roten Schnörkel usw. Die Art und Weise, wie ich sie löste, bestand darin, meine Website auf Ziel-Dotnet 3.5 zu ändern und dann wieder zum ursprünglichen Ziel-Framework (in meinem Fall 4.0) zu wechseln.

John West
quelle
2
Hat auch für mich gearbeitet! Aber ich musste es zweimal machen ... mach eine Figur!
Nicholeous
Nach dem manuellen Zusammenführen einiger web.config-Dateien verschiedener Ziel-Frameworks für dieselbe App funktionierte die web.config nicht mehr und ich erhielt einen 500 Internal Server Error. Nach dem Zurücksetzen wie beschrieben wurden einige alte Einstellungen von Visual Studio 2012 automatisch aus der web.config entfernt, und die App funktionierte erneut.
Humbads
Hatte ein ähnliches Problem, ich denke, bestimmte Framework-Versionen erkennen einfach nicht System.Linqals gültige Bibliothek
Callat
3
Vielen Dank. Es ist lächerlich, dass dieses Thema geschlossen wurde, da es mir auch half, nachdem ich eine Stunde damit verbracht hatte herauszufinden, warum meine Funktion und meine Referenz plötzlich nicht mehr funktionierten. Die Referenz, die für mich fehlgeschlagen ist, war system.management.automation.dll
Bbb
Das war wirklich eine Magie. Genau wie bei meinem neuen Mobile Honor 8X, bei dem das Ändern der Einstellungen manchmal nicht sofort wirksam wird. Damit es richtig funktioniert, muss ich mehrmals hin und her wechseln.
Harish NInge Gowda
28

Ich habe festgestellt, dass dies darauf zurückzuführen ist, dass ich denselben Namespace-Namen wie der Klassenname habe (MyWorld.MyWorld = Namespace.ClassName ) habe.

Ändern Sie Ihren Namespace in einen Namen, der nicht mit Ihrer Klasse identisch ist, und dieser wird kompiliert.

Quelle

KiwiNige
quelle
6
Um es zu lösen, stellen Sie einfach das Windows.Whateverwithglobal::
joshcomley
20

Ich hatte das gleiche Problem mit einer ASP.NET MVC- Site, als ich versuchte, LINQ to SQL zu verwenden . Ich habe das Problem behoben durch:

Projektmappen-Explorer -> Verweise -> Klicken Sie mit der rechten Maustaste auf System.Data.Linq -> Lokal kopieren (True)

ModChowdhury
quelle
17

Überprüfen Sie, ob Ihr Zielframework über dieselben .NET-Versionen verfügt. Ich hatte das gleiche Problem und meine Klasse .NET war 3.5 und die Weblösung hatte 4.5. Ich habe diese synchronisiert und dann hat es funktioniert :)

Gorglar
quelle
16
dies lediglich Wiederholungen Punkt gemacht und erläutert vor Antwort , die mehrere Monate vor diesem veröffentlicht wurde
gnat
12

Ich hatte das gleiche Problem und versuchte alles oben ohne Erfolg, dann fand ich heraus, was es war:

Ich hatte in einem meiner Projekte einen Ordner namens "System" erstellt und dann eine Klasse darin erstellt. Das Problem scheint darauf zurückzuführen zu sein, dass beim Erstellen der CS-Datei ein Namespace namens "System" vorhanden ist, selbst wenn er sich in einem Namespace von "MyProject.System" befindet.

Rückblickend kann ich verstehen, warum dies Probleme verursachen würde. Es hat mich zunächst wirklich verblüfft, da die Fehlermeldungen zunächst nicht mit dem Problem in Zusammenhang zu stehen scheinen.

GrandMasterFlush
quelle
1
Ich hatte auch dieses Problem als Referenz. Es wäre schön, wenn das Tool eine erklärendere Fehlermeldung enthalten würde, aber na ja.
Nick
3
Ich habe etwas auf MSDN gepostet, aber MS sagte, es sei kein Fehler. Ich werde damit nicht streiten, aber ich hätte gehofft, sie hätten verstanden, wie es Probleme verursachen könnte.
GrandMasterFlush
1
Das ist
Betrug
12

Ich habe das gleiche Problem mit System.Data.SQLite festgestellt. Die Ursache des Problems ist, dass die von Ihnen verwendete DLL dieselbe .NET-Version für Ihr Projekt haben sollte.

Wenn Sie beispielsweise (in meinem Fall) SQLite für .NET 4.5 verwendet haben, sollte Ihr Plattformziel auch .NET 4.5 sein.

Sie finden das Plattformziel unter: Projekt> (Projektname) Eigenschaften> Erstellen.

hakanali_md
quelle
1
Dies löste ein Problem, das ich gerade hatte. Die Fehlermeldung ist nicht sehr hilfreich, außer Ihnen zu sagen, welche DLL das Problem ist.
PointlessSpike
7

In meinem Fall trat das Problem auf, weil die von mir erstellte Klasse einen Namespace hatte, der vorhandene Klassen störte. Die neue Klasse A hatte den Namespace zz.yy.xx (aus Versehen). Verweise auf Objekte in einem anderen Namespace yy.xx wurden in Klasse A oder anderen Klassen mit dem Namespace zz nicht kompiliert.

Ich habe den Namespace der Klasse A in yy.xx geändert, was hätte sein sollen, und es hat funktioniert.

zDan
quelle
5

FÜR JEDEN MIT VERBUNDENEN DATEIEN: Ich hatte dieses Problem und verwendete Silverlight. Die fehlerhafte Datei, die diesen Fehler auslöste, war eine verknüpfte Datei.

Der Fehler des Compilers hat mir mitgeteilt, dass der Fehler in dem Projekt aufgetreten ist, in dem sich die Datei befand. Der Fehler war NICHT in diesem Projekt, sondern in dem Projekt, das die verknüpfte Datei enthielt. Diesem Projekt fehlte eine Referenz.

Mario
quelle
Ich hatte dieses Problem mit einem .NET 4-Projekt unter Verwendung von System.Management.Automation beim Testen eines Projekts mit Visual Studio 2013 unter Windows 10. Das Upgrade des Projekts auf .NET 4.5.1 hat das Problem behoben.
Malcolm McCaffery
2

Ich habe dieses Problem bei der Verwendung von Visual Studios Git festgestellt Integration zum Verwalten des Projekts verwendete. Aus irgendeinem Grund wurde das Windows Phone 8-Projekt beim Targeting von x86 problemlos kompiliert. Wenn ich es jedoch auf ARM-Targeting festlegte, schlug die Kompilierung mit einem Fehler fehl, der darauf hinwies, dass "Werbung" im Microsoft-Namespace nicht vorhanden war.

Am Ende habe ich das Problem behoben, indem ich die Microsoft.Advertising. *. DLL-Referenz entfernt und erneut hinzugefügt habe.

Tom Stu
quelle
1

In meinem Fall gab es keine Änderung in Projekten, es wurde nur zum Kompilieren angehalten und mit "Typ- oder Namespace-Name XXX existiert nicht" und in der klagenden Klasse selbst funktioniert Intellisense für diesen XXX-Namespace / diese XXX-Klasse einwandfrei. Das Problem war in der Tat in Referenzen!

Schritte zum Reproduzieren:

  1. Die Lösung hat ProjectA, ProjectB. ProjectA verweist auf log4net von Drittanbietern und ist markiert Copy local: true. ProjectB verweist auf ProjectA und hat keinen Verweis auf log4net. Lösung kompiliert gut.

  2. Änderung in ProjectA: Referenzeigenschaft für log4net an Copy local: false.

  3. Reinigen Sie die Ordner bin und obj.
  4. Beim Kompilieren wird ProjectA kompiliert, ProjectB beschwert sich jedoch darüber, dass der ProjectA-Namespace nicht gefunden wird.

This is because ProjectB Im Ordner bin fehlt die Bibliothek eines Drittanbieters (log4net in my case)!

In diesem Fall wäre die Lösung -

  1. Stellen Sie sicher, dass die Bibliotheksreferenzen von Drittanbietern auf gesetzt sind Copy local: true oder gesetzt sind
  2. Fügen Sie solchen Bibliotheken in den Projekteigenschaften unter Referenzpfad einen Pfad hinzu.
Sasha Bond
quelle
1

Ich verweise auf Microsoft.CommerceServer.Runtime.Orders und habe diesen Fehler festgestellt. Dieses Projekt ist alt und hat Target Framework .NET 2.0. In der Ausgabe hatte ich diesen Fehler:

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"

Ich habe einfach das Zielframework in .NET 4 geändert und jetzt wird es erstellt.

Skychan
quelle
1

Wenn alles andere fehlschlägt, z. B. um sicherzustellen, dass die Zielframeworks identisch sind und Sie mit einer WPF-Klassenbibliothek in VS2010 arbeiten, starten Sie Visual Studio einfach neu. Das hat es für mich getan.

Klaus Nji
quelle
In meinem Fall vs2010 hat eine DLL-Referenz einen Fehler, ich habe die DLL-Referenz gelesen und es scheint großartig, aber nach dem Erstellen tritt das type namespace errorauf. Und ich starte Visual Studio neu, nachdem ich neu gestartet habe, wird die ursprüngliche DLL-Fehleranzeige erneut angezeigt, und ich habe sie erneut gelesen und den Erfolg erneut erstellt.
Yu Yang Jian
0

Ich habe die gleichen Fehler erlebt. Nachdem ich festgestellt hatte, dass mein Projekt den falschen Assembly-Namen hatte (ich habe Dateien aus einem anderen Projekt kopiert und die Namespaces wurden etwas verwirrt) und es wieder geändert, wurde das Projekt gut kompiliert.

Fred
quelle
Obwohl es abgelehnt wurde, war dies mein Problem! Vielen Dank.
SteveCav
0

Ich habe eine sehr ähnliche Fehlermeldung erhalten, die dadurch verursacht wurde, dass ich versehentlich ein Duplikat einer Klasse in einem anderen Projekt meiner Lösung erstellt habe. Das Löschen des Duplikats hat das Problem behoben

Chris Halcrow
quelle
0

Ich musste kürzlich eine Systemwiederherstellung durchführen, die dazu führte, dass sich einige meiner Dateien änderten / verschwanden, an denen ich seit der Wiederherstellung gearbeitet hatte. Einige davon waren DLL-Dateien. Ich habe die Quellcodeverwaltung verwendet, um das gesamte Projekt abzurufen, aber ich hatte immer noch ein ähnliches Problem wie oben. Ich habe diese Antwort gefunden , die beschreibt, dass Sie möglicherweise eine DLL entfernen und lesen müssen, um Ihre Fehler zu beheben. Dies war in meinem Szenario der Fall.

Das Entfernen WebMatrix.WebDataund Lesen sowie das Hinzufügen von haben WebMatrix.Datameinen Fehler behoben The type or namespace name 'Data' does not exist in the namespace 'WebMatrix' ....

JabberwockyDecompiler
quelle
-3

Löschen Sie die Datei .refresh.dll, wenn Sie sich in der Quellcodeverwaltung befinden. Dann wieder aufbauen. Es sollte funktionieren. Das hat bei mir funktioniert

Sajad
quelle