Der name '$Ausnahme " existiert nicht im aktuellen Kontext
Heute war ich das Debuggen einer Anwendung in meiner Arbeit. Ich ging, um einen Haltepunkt in einem meiner catch-Blöcke, um zu inspizieren eine Ausnahme mit mehr detail.
Den View Detail
modales Fenster öffnet sich ganz normal, aber anstatt zu zeigen, mir die details der Ausnahme, es wirft ein seltsamer Fehler, ich habe nie, noch weiß ich, was es bedeutet:
Die Fehlermeldung lautet:
Dem Namen '$Ausnahme " existiert nicht im aktuellen Kontext
Dies ist frustating, weil ich bin innerhalb der catch-block scope, also ich sollte in der Lage sein zu sehen, wie meine Ausnahme.
Nach dem Neustart meiner Anwendung konnte ich Debuggen ganz gut. Dies war das einzige mal (bisher) bekam ich diese Fehlermeldung.
Weiß jemand, was es bedeutet und wie ich es beheben kann (ohne Neustart der Anwendung)?
HINWEIS: ich bin mit Visual Studio 2012 Premium. Version 11.0.61030.00 Update 4
- $Ausnahme sieht aus wie etwas in javascript, c# hätte nicht das " $ " vor ihm haben, können Sie überprüfen, dass Ihre JS-Dateien sind nicht diejenigen, die wirft den Fehler?
- Diese Anwendung funktioniert nicht mit JS überhaupt. Es ist vollständig in C# geschrieben, und Sie können auch sehen, dass der Typ der Ausnahme wird
System.Net.Http.HttpRequestException
was ein .NET Ausnahme $exception
ist debugger Magie für "die aktuelle Ausnahme". Manchmal auch einige bits umgedreht werden, ohne Grund, und der debugger Stoppt, passiert es.- Tatsächlich, ich startete das Programm und es nur geklappt, dieses mal. Jedoch, die Anwendung neu zu starten dauert einige Zeit, und immer zu dieser catch-block nimmt sogar noch mehr. Ich war auf der Suche nach einer Lösung, wie man dieses Problem beheben ohne Neustart von VS oder meine Bewerbung, wenn ich mich in dieser situation in der Zukunft.
- Wenn Sie nicht haben einen memory-dump und haben keine Schritte, um es zu reproduzieren, ich fürchte, es gibt sehr wenig chance, erhalten Sie eine befriedigende Antwort. Ich habe gesehen, Fehler wie diese pop-up alle paar Jahre einmal; ihn ignorieren und weiter arbeiten. 😉
- C#6 eingeführt $ 🙂 Check Interpolierten Strings.
- Ja, aber wäre es nicht angezeigt, eine Fehlermeldung wie, dass, da es compile-Zeit verwandelt in eine
string.Format
nennen. Ausnahmen sind Laufzeit, so dass durch die Zeit, die die Ausnahme ausgelöst wird, wird die Zeichenfolge enthält nicht mehr die $. - Ich bekam diese Fehlermeldung, wenn ich importiert
DLL
mit falschen Aufrufkonvention.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, explizit zu sagen, die compiler importieren der dll. Ex:
Haben Sie einen Blick auf MSDN-Bibliothek : https://msdn.microsoft.com/en-us/library/ms164891.aspx
Nach Ihnen, erhalten Sie eine Ausnahme ausgelöst, wenn Sie versuchen, zu bewerten, ein exception-Objekt, wenn keine exception aufgetreten ist. Aber, da Sie sich in den catch-block, eine excption stattgefunden hat... Ohne zu sehen, Ihr code ist es schwer zu erraten, aber ist es vielleicht möglich, dass du mehrere threads, und die Ausnahme war erfüllt von einem thread, bevor behandelt wird von anderen? Nicht wirklich sinnvoll, aber es ist einen Blick Wert.
Eine sichere(r) option würde sicherstellen, dass Sie prüfen, ob die Ausnahme ist die null in Ihrem logger, bevor Sie versuchen, Details von ihm.
Auch lohnt ein Blick auf: Die HttpRequestException enthält eine innere Ausnahme, die möglicherweise die Quelle der null-Referenz? Nur spekuliert.
Ich Stimme mit trapsuutjies, es gibt wohl keine Ausnahme. Zu unterdrücken, Fehler, drücken Sie Strg+Alt+E, erweitern Sie Managed Debugging-Assistenten, und deaktivieren Sie LoadFromContext.
Als ich sah, dass dieser Fehler, ich war auch immer "Konnte nicht bewerten Ausdruck' Fehler im debugger. Das führt mich zu diesem post von Rick Strahl, der sagte es war ein bug in der original-version von Visual Studio 2013.
https://weblog.west-wind.com/posts/2013/Nov/21/Visual-Studio-2013-Could-not-evaluate-Expression-Debugger-Abnormality
Wenn ich überprüft die Maschine, die ich war auf, es hatte in der Tat VS2013 ohne die updates installiert. Mit der Installation der updates das Problem behoben wurde.
Löste ich das gleiche problem in diesen Schritten:
Schritt 1), Wenn Sie das Programm Ihrer benutzerdefinierten DLL in C++ mit Visual studio,dann auf der Seite Eigenschaft für Ihr Projekt setzen die
Common Language Runtime Support (/clr)
parameterCommon Language Runtime Support (/clr)
.Schritt 2) Funktion Verzögerung in
.h
Datei verwenden__declspec(dllexport)
- Schlüsselwort wie folgt:Schritt 3) Erstellen und exportieren von DLL-Datei, dann verwenden Sie die Dependency Walker software, um Ihre Funktion EntryPoint.
Schritt 4) Import DLL-Datei Im C# - Projekt, und legen Sie EntryPoint und CallingConvention variable wie folgt:
Habe ich diese, wenn Sie in Configuration Manager die Konfiguration für das Projekt wurde eingestellt, um Freizugeben. Der Wechsel zu Debuggen dieses Problem lösen.