wake-up-neo.net

"Typ oder Namespace-Name konnte nicht gefunden werden", aber alles scheint in Ordnung zu sein?

Ich bekomme ein:

typ- oder Namespace-Name wurde nicht gefunden

fehler für eine C # WPF-App in VS2010. Dieser Code-Bereich war gut kompilierbar, aber plötzlich bekomme ich diesen Fehler. Ich habe versucht, die Projektreferenz und die using-Anweisung zu entfernen, VS2010 zu schließen und neu zu starten, aber ich habe immer noch dieses Problem.

Irgendwelche Ideen, warum dies geschehen könnte, wo es so aussieht, als ob ich das Richtige in Bezug auf Reference & using-Anweisung mache?

Ich habe auch in VS2010 festgestellt, dass Intellisense für diesen Namespace in Ordnung ist. Es scheint also, als hätte VS2010 die Projektreferenz und sieht den Namespace auf einer Seite, aber während des Kompilierens wird es nicht angezeigt?

225
Greg

Dies kann das Ergebnis einer Inkompatibilität einer .Net-Framework-Version zwischen zwei Projekten sein. 

Es kann auf zwei Arten passieren: 

  1. ein Kundenprofilprojekt, das auf ein vollständiges Rahmenprojekt verweist; oder 
  2. eine ältere Framework-Version für eine neuere Framework-Version

Dies ist beispielsweise der Fall, wenn eine Anwendung auf das .Net 4-Clientprofil-Framework ausgerichtet ist und das Projekt, auf das es verweist, auf das vollständige .Net 4-Framework zielt.

Um das klarer zu machen:

  • Projekt A richtet sich an das Client-Profil-Framework
  • Projekt A referenziert Projekt B
  • Projekt B zielt auf den gesamten Rahmen ab

In diesem Fall besteht die Lösung darin, entweder das Rahmenziel der Anwendung (Projekt A) zu aktualisieren oder das Ziel der referenzierten Assembly (Projekt B) herunterzuregeln. Es ist in Ordnung, dass eine vollständige Framework-App eine Client-Profil-Framework-Assembly referenziert/verwendet, nicht jedoch umgekehrt (das Client-Profil kann nicht auf eine vollständige Framework-bezogene Assembly Bezug nehmen).

Beachten Sie, dass Sie diese Fehlermeldung auch erhalten können, wenn Sie ein neues Projekt in VS2012 oder VS2013 erstellen (das .Net 4.5 als Standardframework verwendet) und: 

  • die referenzierenden Projekte verwenden .Net 4.0 (dies ist üblich, wenn Sie von VS2010 zu VS2012 oder VS2013 migriert haben und dann ein neues Projekt hinzufügen.) 

  • die Projekte, auf die verwiesen wird, verwenden eine höhere Version, z. B. 4.5.1 oder 4.5.3 (Sie haben Ihre vorhandenen Projekte auf die neueste Version ausgerichtet, VS erstellt jedoch weiterhin neue Projekte für Version 4.5 und referenziert dann die älteren Projekte aus dem neues Projekt)

404
slugster

Das Neuinstallieren von Nuget-Paketen hat mir geholfen. Nachdem ich die .NET Framework-Versionen so geändert habe, dass sie für alle Projekte synchron sind, wurden einige der Nuget-Pakete (insbesondere Entity Framework) für frühere Versionen noch installiert. Dieser Befehl in Packages Manager Console installiert Pakete für die gesamte Lösung erneut: 

Update-Package –reinstall
29
saxorut

Beim Erstellen der Lösung wurde derselbe Fehler angezeigt (Typ oder Namespace '' konnte nicht gefunden werden). Darunter sah ich eine Warnung, die besagte, dass "die Referenz nicht aufgelöst werden konnte" und um sicherzustellen, dass "die Assembly auf der Festplatte vorhanden ist".

Ich war sehr verwirrt, da sich meine DLL sehr deutlich an dem Ort befand, auf den die Referenz verweist. VS schien keine Fehler hervorzuheben, bis ich versuchte, die Lösung zu erstellen.

Ich habe das Problem endlich erkannt (oder zumindest vermute ich, dass es das Problem war). Ich habe die Bibliotheksdatei in derselben Lösung erstellt. Obwohl es auf der Festplatte vorhanden war, wurde es an diesem Ort neu erstellt (irgendwie wurde während des Prozesses der Bibliothek mein anderes Projekt neu aufgebaut - in der gleichen Lösung -, auf die die Bibliothek verwiesen hat, muss entschieden haben, dass die Bibliothek nicht existiert) 

Als ich mit der rechten Maustaste auf das Projekt geklickt und nur dieses erstellt habe, habe ich anstelle der gesamten Lösung keinen Fehler erhalten.

Um dieses Problem zu beheben, fügte ich die Bibliothek als Abhängigkeit zu dem Projekt hinzu, in dem sie verwendet wurde.

Um dies zu tun: 

  1. Ich habe im Projektmappen-Explorer mit der rechten Maustaste auf meine Lösung geklickt und .__ "Eigenschaften" ausgewählt.
  2. Dann habe ich unter "Allgemeine Eigenschaften" "Projektabhängigkeiten" ausgewählt.
  3. Dann wählte ich im Dropdown-Menü Projekte das Projekt aus, das Auf die Bibliothek angewiesen war, und
  4. Aktivieren Sie das Kontrollkästchen neben der Bibliothek unter "Abhängig von".

Dadurch wird sichergestellt, dass das Bibliotheksprojekt zuerst erstellt wird.

26
ksun

Ich habe keine Ahnung, warum dies funktioniert hat, aber ich habe den Projektverweis, der von VS2015 gesagt wurde, dass er nicht gefunden werden konnte, entfernt und wieder hinzugefügt. Problem gelöst. Ich hatte versucht, VS zu reinigen, aufzubauen und neu zu starten, ohne Erfolg.

16
Alexander Høst

Zuerst würde ich überprüfen, ob die von Ihrem Projekt generierten Informationen nicht beschädigt sind. Reinigen Sie Ihre Lösung und bauen Sie sie neu auf.

Wenn das nicht hilft, habe ich in der Vergangenheit bei Designer-Problemen gearbeitet, ein Windows Forms-Projekt zu öffnen und dann wieder zu schließen. Dies ist ein bisschen Hühnchen-Entrails-ish, halten Sie nicht den Atem an.

6
Greg D

Eine schwierigere Situation war, auf die ich gestoßen bin: Projekt 1 zielt auf das vollständige 4.0-Framework mit installiertem Microsoft.Bcl.Async-Paket ab Projekt zwei richtet sich auf das vollständige 4.0-Framework, würde jedoch nicht kompilieren, wenn auf ein Project eine Klasse referenziert wird.

Nachdem ich das Async NuGet-Paket im zweiten Projekt installiert hatte, wurde es gut kompiliert.

5
Kim

Dieser hat für mich gearbeitet. Entfernen Sie in Ihrer Klasse, in der der Klassenname definiert ist, z. B .: Öffentliche Klasse ABC, ein Zeichen und warten Sie ein wenig. Ihre Fehlerliste wird größer, weil Sie den Namen geändert haben. Setzen Sie nun das eingegebene Zeichen zurück. Das hat für mich funktioniert, hoffentlich wird es auch für Sie funktionieren. Viel Glück!!!

4
Sandeep Goundar

Ich hatte ein ähnliches Problem: Der Compiler war konnte keinen Ordner innerhalb desselben Projekts erkennen, daher erzeugte eine Direktive, die eine Verknüpfung zu diesem Ordner herstellte, einen Fehler. In meinem Fall ist das Problem entstand durch Umbenennen des Ordners. Obwohl ich den Namensraum aller Klassen in diesem Ordner aktualisiert habe, ist die Aktualisierung der Projektinformationen irgendwie fehlgeschlagen. Ich habe alles versucht: Löschen der .suo-Datei und der Ordner bin und obj, Reinigen der Lösung, Neuladen des Projekts - nichts hat geholfen. Ich habe das Problem durch Löschen des Ordners und der darin enthaltenen Klassen behoben, einen neuen Ordner erstellt und neue Klassen in diesem neuen Ordner erstellt. (Das Verschieben der Klassen in den neuen Ordner hat nicht geholfen).

PS: In meinem Fall arbeitete ich an einer Webanwendung. Dieses Problem kann jedoch bei verschiedenen Projekttypen auftreten.

3
Ilia Anastassov

Dieses Problem ist beim Aktualisieren vorhandener Projekte von VS2008 auf VS2012 aufgetreten. Ich habe festgestellt, dass zwei Projekte (die einzigen zwei, die ich erstellt habe) unterschiedliche .Net Frameworks (3.5 und 4.0) zum Ziel hatten. Ich habe dies auf der Registerkarte "Anwendung" der Projekte gelöst, indem sichergestellt wurde, dass beide Projekte ".NET Framework 4" im Feld "Target Framework" hatten.

2
Bill

[Facepalm] Mein Problem war, dass ich die Abhängigkeit von C++ hinzugefügt hatte.

Wechseln Sie zu dem Projekt, das nicht erstellt werden kann, öffnen Sie den Ordner "Referenzen" im Projektmappen-Explorer und prüfen Sie, ob Ihre Abhängigkeit aufgeführt ist.

Wenn nicht, können Sie "Referenz hinzufügen" hinzufügen und die Abhängigkeit auf der Registerkarte "Projekte" auswählen.

Boom Shankar.

2
user595447

Wir hatten einen seltsamen Fall, den ich gerade in einer Lösung gelöst habe. Im Hauptprojekt befand sich ein verstecktes/Leerzeichen vor einer Anweisung "using". Dieses Projekt würde gut funktionieren und die Website funktionierte gut, aber das Unit-Test-Projekt, auf das verwiesen wurde, konnte nicht erstellt werden. 

2
Henry Fieger

In meinem Fall finde ich, dass die Referenz in VisualStudio ein Dreieck und ein Ausrufezeichen als dieses Bild hat.

 

dann klicke ich mit der rechten Maustaste, um es zu entfernen, und füge die DLL-Referenz wieder korrekt hinzu. Das Problem wurde behoben.

2
yu yang Jian

Ich hatte das gleiche Problem wie besprochen: VS 2017 hebt eine Klasse im referenzierten Projekt als Fehler hervor, aber die Lösung ist in Ordnung und Intellisense funktioniert sogar.

So habe ich dieses Problem gelöst:

  1. Entladen Sie das referenzierte Projekt 
  2. Öffne die .proj-Datei in VS (ich habe nach Duplikaten gesucht, als jemand hier vorgeschlagen wurde)
  3. Projekt erneut laden (ich habe die Projektdatei nicht geändert oder sogar gespeichert, da ich keine Duplikate hatte)
2
Michael D.

Ich weiß, das ist ein totes Pferd, aber ich hatte diesen Fehler und die Rahmenbedingungen waren gut. Mein Problem bestand im Wesentlichen darin, dass eine Schnittstelle nicht gefunden werden konnte. Also kam ich auf die Idee: "Warum gerade diese Schnittstelle, wenn andere gut funktionieren?" 

Es endete, dass ich tatsächlich über WCF auf einen Dienst mit einer Endpunktschnittstelle zugegriffen habe, die Entity Version 6 verwendete, und die restlichen Projekte verwendeten Version 5. Statt NuGet zu kopieren, kopierte ich die Nuget-Pakete einfach in ein lokales Repository und verwandte sie listete sie anders auf. 

z.B. EntityFramework6.dll versusEntityFramework.dll.

Ich fügte dann die Referenzen zum Client-Projekt hinzu und puff, mein Fehler ging weg. Ich weiß, dass dies ein Edge-Fall ist, da die meisten Leute keine Versionen von Entity Framework mischen werden.

1
djangojazz

In meinem Fall hatte ich eine Klasse, die im richtigen Quellordner aufgeführt war, sich jedoch nicht im Projektmappen-Explorer registrierte. Ich musste mit der rechten Maustaste auf das Projekt> Vorhandenes Element hinzufügen klicken und manuell die Klasse auswählen, die als fehlend gemeldet wurde. Dann hat alles geklappt!

1
MPJ567

Es geschieht in Visual Studio 2017. 

  1. Starten Sie Visual Studio neu
  2. Sauberes Projekt, das nicht erstellt werden kann.
  3. Erstellen Sie das Projekt neu.
1
Jalal

Ich habe meine Lösung zu dem Mix hinzugefügt, weil es ein bisschen anders war und ich eine Weile brauchte, um herauszufinden.

In meinem Fall habe ich eine neue Klasse zu einem Projekt hinzugefügt. Da jedoch meine Versionskontrollbindungen nicht festgelegt wurden, musste ich die Datei außerhalb von Visual Studio (über VC) schreibbar machen. Ich hatte das Speichern in Visual Studio abgebrochen, aber nachdem ich die Datei außerhalb von VS schreibbar gemacht hatte, drückte ich in VS erneut auf Alles speichern. Dies führte versehentlich dazu, dass die neue Klassendatei nicht im Projekt gespeichert wurde. Allerdings zeigte Intellisense sie immer noch als blau und gültig in den referenzierenden Projekten an, obwohl die Datei nicht gefunden wurde und die Datei nicht gefunden wurde Fehler beim Typ nicht gefunden. Beim Schließen und Öffnen von Visual Studio wurde das Problem weiterhin angezeigt (wenn ich jedoch zur Kenntnis genommen hatte, dass die Klassendatei beim erneuten Öffnen fehlte).

Nachdem ich das erkannt hatte, war der Fix einfach: Nachdem die Projektdatei auf schreibbar gesetzt war, las sie die fehlende Datei in das Projekt ein. Alle bauen jetzt gut.

1
Nick Gotch

Hatte die gleichen Fehler, meine Geschichte war folgende: Nach schlechtem Zusammenführen (über git) hatte eine meiner .csproj-Dateien compile-Einträge wie

<Compile Include="Clients\Tree.cs" />
<Compile Include="Clients\Car.cs" />
<Compile Include="Clients\Tree.cs" />        //it's a duplicate

Wenn Sie eine große Lösung und mehr als 300 Meldungen im Fehlerfenster haben, ist dieses Problem schwer zu erkennen. Ich habe also eine beschädigte .csproj-Datei über den Notepad geöffnet und doppelte Einträge entfernt. Hat in meinem Fall gearbeitet.

1
Andrew Kotov

Sie können auch versuchen, den Code zu entfernen, mit dem Sie Probleme haben , und prüfen, ob er ohne Verweise auf diesen Code kompiliert wird. Wenn nicht, korrigieren Sie die Probleme, bis sie erneut kompiliert werden, und arbeiten Sie dann Ihren verdächtigen Problemcode erneut ein. Manchmal erhalte ich seltsame Fehler in Bezug auf Klassen oder Methoden, von denen ich weiß, dass sie korrekt sind, wenn der Compiler dies nicht tut mag etwas anderes nicht. Sobald ich das Problem behoben habe, an dem es wirklich hängt, verschwinden diese "Phantom" -Fehler.

1
user164226

Ich hatte das gleiche Problem. Eines Nachts würde mein Projekt am nächsten Morgen ERRORS! Kompilieren.

Ich fand schließlich heraus, dass das visuelle Studio beschlossen hatte, einige meiner Referenzen zu "Tweak" und an anderer Stelle zu zeigen. zum Beispiel:

System.ComponentModel.ISupportInitialize wurde irgendwie "blahblah.System.ComponentModel.ISupportInitialize"

Eine ziemlich unhöfliche Sache für vs, wenn Sie als ich

1
user3784340

In meinem Fall bestand das Problem darin, dass der Name der Assembly von VS geändert wurde, nachdem der Namespace genau wie in einem anderen Projekt geändert wurde (absichtlich). Es gab also zwei Assemblys mit demselben Namen, wobei eine Assembly die andere überschrieb

1
user1121956

Um dieses Problem zu lösen, kann es auch hilfreich sein, die *.sln.DotSettings-Datei der zugehörigen Lösung zu löschen und neu zu erstellen.

Mein Fall war derselbe wie hier besprochen, aber nichts wurde gelöst, bis ich den System.Core-Verweis aus der Verweisliste entfernt habe.

ich hoffe, es wird jemandem helfen, weil dieses Problem sehr frustrierend ist

0
yossico

Ich habe diesen Fehler beim Versuch erhalten, einen Build mit einem Visual Studio Team Services-Build auf meinem lokalen Computer als Agenten auszuführen.

Es funktionierte in meinem regulären Arbeitsbereich einwandfrei und ich konnte die SLN-Datei lokal im Agentenordner öffnen und alles ok kompilieren.

Die betreffende DLL wurde innerhalb des Projekts als Lib/MyDLL.DLL gespeichert und referenziert dies in der csproj-Datei:

<Reference Include="MYDLL, Version=2009.0.0.0, Culture=neutral, PublicKeyToken=b734e31dca085caa">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>Lib\MYDLL.dll</HintPath>
</Reference>

Es stellte sich heraus, dass die Datei trotz des Hinweispfads buchstäblich nicht gefunden wurde. Ich denke, vielleicht hat msbuild relativ zur SLN-Datei statt der Projektdatei gesucht.

Wenn die Meldung Could not resolve this reference. Could not locate the Assembly lautet, stellen Sie in jedem Fall sicher, dass sich die DLL an einem für msbuild zugänglichen Ort befindet.

Ich habe irgendwie geschummelt und eine Nachricht gefunden, die Considered "Reference\bin\xxx.dll" sagte und stattdessen die dlls einfach dort kopierte.

0
Simon_Weaver

Ok, Jahre später mit VS 2017 .NET Core 2.2 Razor Pages. Ich glaube, diese Antwort könnte jemandem helfen. Wenn es eine Schlange wäre, hätte sie mich gebissen. Ich habe Sachen herumgeschmissen, Namen geändert, Models umbenannt und plötzlich habe ich diesen Fehler bekommen:

Fehler CS0246 Der Typ- oder Namespace-Name 'UploadFileModel' wurde nicht gefunden. (Fehlt eine using-Direktive oder eine Assembly-Referenz?)

Dies wurde in meiner .chstml Razor Page rot unterstrichen. (nach Fix nicht unterstrichen):

@page
@model UploadFileModel

Zum Glück habe ich also den Code von jemand anderem gefunden, den ich ursprünglich verwendet hatte, und siehe da, der Namespace enthielt nicht den .cshtml-Dateinamen !!!

Hier ist mein schlechter Dummy-Fehler, der mich mit dem Seitennamen im Namespace verprügelt:

namespace OESAC.Pages.UploadFile
{
    public class UploadFileModel : PageModel
    {

Was mein ursprünglicher Code hatte und alles was ich tun musste, war den Seitennamen aus dem Namespace UploadFile zu löschen:

namespace OESAC.Pages
{
    public class UploadFileModel : PageModel
    {

Und siehe da, alle Fehler sind verschwunden !! Wie dumm von mir. Aber Sie wissen, MS hat dieses .NET C # MVC-Zeug für uns Nicht-Informatiker wirklich verwirrend gemacht. Ich stolpere ständig auf meinen Schnürsenkeln und versuche, Modellnamen, Seitennamen und Syntax zu finden, um sie zu verwenden. Es sollte nicht so schwer sein. Naja. Ich hoffe Fehler und Lösung hilft jemandem. Der Fehler war richtig, es gibt keinen Namespace namens "UploadFileModel" haha.

0
JustJohn

Ich arbeitete an der VS 2017 Community Edition und hatte das gleiche Problem mit CefSharp-Nuget-Paketen. 

Pakete wurden erfolgreich heruntergeladen und wiederhergestellt, das Projekt konnte erstellt und erfolgreich ausgeführt werden. Nur das Markup gab an, dass die Namespaces nicht erkannt wurden.

Alles, was ich tun musste, war, den Abschnitt References zu öffnen und auf eines der gelben Ausrufezeichen zu klicken. 

 enter image description here

Nach einigen Sekunden sind die Markierungsfehler verschwunden.

 enter image description here

0
Janis S.

In meinem Fall hatte ich zwei Projekte in einer Lösung, ich fügte dem referenzierten Projekt einen Sub-Namespace hinzu, aber beim Erstellen bemerkte ich nicht, dass die referenzierte Projekterstellung fehlgeschlagen ist, und es wurde die zuletzt erfolgreich erstellte Version verwendet, die nicht erfolgreich war Diesen neuen Namespace haben, so dass der Fehler korrekt war, dass er nicht gefunden werden konnte, weil er nicht vorhanden war. Die Lösung bestand offensichtlich darin, Fehler in referenzierten Projekten zu beheben.

0
Albert221

In meinem Fall ging ich in die Lösungseigenschaften und stellte sicher, dass "Build" in der Konfiguration für beide Projekte geprüft wurde. Mein Hauptprojekt hat es nicht geprüft.

 enter image description here

0
Trevor

In meinem Fall ergab das Hinzufügen der DLL als Referenz den Fehler type or namespace name could not be found. Das Kopieren und Einfügen der DLL-Datei direkt in den Ordner bin löste jedoch den Fehler.

Keine Ahnung, warum das funktioniert hat.

0
ZerosAndOnes

Ich weiß, dass dieser Thread alt ist, aber ich teile ihn trotzdem. Ich muss alle Abhängigkeiten der importierten Assembly von Drittanbietern installieren.

Hop diese Hilfe :)

0
Samih A

In meinem Fall hatte ich eine Datei, die durch externe Abhängigkeiten (xsd2code) erstellt wurde, und irgendwie wurden ihre designer.cs-Dateien nicht ordnungsgemäß von VS verarbeitet. Das Erstellen einer neuen Datei in Visual Studio und das Einfügen des Codes darin hat den Trick für mich erledigt.

0
Tanuki

Jedem, der diese Fehlermeldung erhält, wenn er versucht, seine Website in Azure zu veröffentlichen, hat mir keine der vielversprechenden Lösungen oben geholfen. Ich befand mich im selben Boot - meine Lösung war von alleine gut gebaut. Ich musste am Ende 

  1. Entfernen Sie alle Nuget-Pakete in meiner Lösung. 
  2. Schließen Sie meine Lösung und öffnen Sie sie erneut. 
  3. Fügen Sie alle Nuget-Pakete erneut hinzu. 

Ein wenig schmerzhaft, aber nur so konnte ich meine Website dazu bringen, bei Azure zu veröffentlichen.

0
Dan