it-swarm.com.de

Der Name von Visual Studio ist im aktuellen Kontext nicht vorhanden

Ich rufe eine statische Methode für eine Klasse wie

Foo.bar()

Die Intellisense von Visual Studio erkennt für mich die Foo- und Autocompletes-Leiste (es unterstreicht Foo und alles, was gut funktioniert, funktioniert gut). Alles sieht gut aus, bis ich mit dem Erstellen des Projekts fertig bin, und es wird eine Fehlermeldung ausgegeben, dass der Name Foo im aktuellen Kontext nicht vorhanden ist.

Ich benutze diesen statischen Methodenaufruf in anderen Dateien, daher weiß ich, dass die Klasse in Ordnung ist. Die Situation ist zu groß, um Code zu schreiben. Daher suche ich meistens nach Gründen, die dazu führen, dass Intellisense normal funktioniert, aber Fehler beim Kompilieren auftreten. 

16
Jarrod Everett

Dies kann auftreten, wenn sich Namespaces, Klassen und Variablen verwickeln, wenn sie denselben Namen haben. Ich habe damit schon einmal gelitten. Intellisense hat mir gesagt, dass ich Recht habe, der Compiler hat mir gesagt, dass ich Unrecht habe! Ich habe dem Compiler vertraut!

Sie haben 2 Möglichkeiten, die ich mir vorstellen kann

  1. Durchsuchen Sie Ihren Code nach Foo und stellen Sie fest, dass er nicht für die statische Klasse verwendet wird.

  2. Qualifizieren Sie den Aufruf von Foo.bar () vollständig. MyApplication.This.That.Foo.bar();

Tun Sie es in dieser Reihenfolge ... es ist besser, das Problem elegant zu lösen, sodass Sie einfach Foo.bar () aufrufen können, da dies besser lesbar und wartbar ist als MyApplication.This.That.Foo.bar(); überall!

9
series0ne

Dieser Fehler wurde durch unterschiedliche Versionen des .NET-Frameworks in den verschiedenen Projekten verursacht. Die Klassenbibliothek, die ich erstellt hatte, war 4.5 und die Anwendung war 4.0, aber der einzige Fehler, den es gab, waren Namespace-Fehler. Wenn Sie die Framework-Version in der Klassenbibliothek ändern und sie erneut erstellen, dann hat die Anwendung den Fehler behoben.

27
aherocalledFrog

In meinem Fall fehlte mir ein } am Ende einer der Methoden in der Mitte des Codes, wodurch das Programm den Rest des Codes nicht sah und über die Methoden klagte, die ich nach diesem Punkt definiert habe.

7
Mehrad

Ich weiß, dass dies ein altes Thema ist, aber ich habe gerade dasselbe erlebt und für mich war es, weil die Datei nicht in der Lösung enthalten war.

Ich passierte wirklich, weil ich die Klasse und dann die Datei umbenannt hatte, wodurch Visual Studio immer noch die Klasse und den Namensraum kannte, der Compiler jedoch die Datei nicht abrufen konnte, da die umbenannte Datei nicht enthalten war. 

3
Allan S. Hansen

Alter Thread, den ich kenne, aber ich bin auf dieses Problem gestoßen, als ich auf eine statische Methode innerhalb eines Komponententestprojekts verwies - Intellisense sagte, die Methode sei da, aber als ich versuchte, den Test (im Debug-Modus) zu erstellen/auszuführen, bekam ich den Fehler 'Name existiert nicht im aktuellen Kontext'. Um das Problem zu beheben, musste ich das Projekt mit der referenzierten statischen Methode in der Debug-Konfiguration neu erstellen (zuvor war es nur in der Release-Konfiguration erstellt worden). Danach erstellte der Test OK und lief ordnungsgemäß ab.

2
Donald McInnes

Ziehen Sie in Betracht, eine Bereinigung und dann einen Build für das Projekt mit dem Problem durchzuführen. Der Editor und Intellisense können die Klasse korrekt erkennen, während der Compiler mit veralteten Dateien arbeitet. (Ich hatte das gleiche Problem, und so habe ich es gelöst.)

1
Michael

dies ist ein alter Artikel, den ich kenne, aber ich bin gerade auf dieses Problem gestoßen und hat mich ein paar Tage lang verwirrt. Schließlich bin ich dazu gekommen: Klicken Sie auf die Klassendatei im Projektmappen-Explorer und dann auf die Registerkarte Eigenschaften. Stellen Sie sicher, dass Build Action auf "Compile" eingestellt ist.

1
user1012598

Ich hatte auch ein Problem mit der Erstellung einer Datenzugriffsebene und es wurden statische Methoden mit den gleichen Symptomen aufgerufen: Intellisense fand sie, aber nicht den Compiler. Ich habe viele der oben genannten Möglichkeiten ausprobiert, einschließlich der Korrektur der .NET-Version.

Beim Hinzufügen der Quelldateien zum Projekt habe ich auch den Namespace geändert. __ Mit der Datei mit dem Problem habe ich vergessen, den Namespace zu ändern, wenn er zu einem anderen Zeitpunkt importiert wurde.

0
William Biesty

Passen Sie die zugehörige Datei an. Wenn der Fehlercode in Default.aspx.cs Angezeigt wird, müssen Sie die oberste Zeile in der Datei Default.aspx Wie folgt ändern:

Ersetzen Sie "CodeFile=" Durch "CodeBehind"

Hoffe das kann helfen.

-Danke, Thai_FUV

0
Tran Thanh Thai

Meine Lösung für dieses Problem, das ab und zu auftritt:

  1. Suchen Sie im Projektmappen-Explorer nach der Klasse, die Probleme bereitet, und "Vom Projekt ausschließen".
  2. Diese Assembly neu erstellen (nennen wir "A")
  3. Das Projekt, das die Datei ("B") verwendet hat, fordert Sie auf, das Projekt "neu zu laden". Warten Sie.
  4. Fügen Sie die Datei wieder zu Assembly A hinzu, aus der Sie sie gerade entfernt haben, und erstellen Sie sie neu
  5. Laden Sie jetzt das Projekt B neu

Dann wurde die Datei in VS gefunden und alles war gut.

0
Ted

Schließen Sie alle Registerkarten von MonoDevelop. Schließen Sie dann MonoDevelop. Durch das erneute Öffnen von MonoDevelop wurde das Problem für mich gelöst.

0
chelder

Meine war eine etwas kompliziertere Lösung. Projekt A referenzierte Projekte B und C: Beide Referenzen hatten Copy Local in true und beide produzierten Assemblys mit identischen Namen. Beim Erstellen des referenzierenden Projekts wurden die Ausgabeassemblys aus den Projekten B und C kopiert und die andere überschrieben, da sie denselben Namen hatten. VS suchte dann nach den Referenzen im Build-Verzeichnis und fand nur die Assembly, die "gewonnen" hatte.

0
BKewl

Ich bin ein paar Mal auf dieses Problem gestoßen, und wenn ich dies tue, überprüfe ich als Erstes, ob die Assembly, die nicht erkannt wird, irgendwelche Nuget-Pakete hat. In meinen Fällen haben sie es immer getan und ich habe einfach vergessen, die gleichen Pakete in der Assembly zu installieren, in denen sich der Verweis auf die nicht anerkannte Assembly befindet. Ein Befehl zum erneuten Erstellen und ein Problem wurden behoben. Ich hoffe das hilft jemandem. Dieselbe Fehlermeldung kann für mehrere Dinge angegeben werden, so dass dieser spezielle Fall möglicherweise nicht zutreffend ist. Wenn Sie Nuget nicht verwendet haben, würde ich vorschlagen, die anderen Antworten auszuprobieren 

0
SimperT