Heute habe ich eine Anwendung in meiner Arbeit getestet. Ich fuhr fort, einen Haltepunkt in einem meiner Fangblöcke zu setzen, um eine Ausnahme mit mehr Details zu untersuchen.
Das modale Fenster View Detail
öffnet sich normal, aber anstatt mir die Details der Ausnahme zu zeigen, wirft es einen seltsamen Fehler auf, einen, den ich nie bekommen habe, und ich weiß nicht, was es bedeutet:
Der Fehler sagt:
Der Name $ exception existiert nicht im aktuellen Kontext
Das ist frustrierend, weil ich innerhalb des catch-Block-Bereichs bin, also sollte ich meine Ausnahme sehen können.
Nachdem ich meine Anwendung neu gestartet habe, konnte ich sie problemlos debuggen. Dies war das einzige Mal (bis jetzt) ich habe diesen Fehler.
Weiß jemand, was es bedeutet und wie kann ich es beheben (ohne die Anwendung neu starten zu müssen)?
HINWEIS : Ich verwende Visual Studio 2012 Premium . Version 11.0.61030.00 Update 4
Versuchen Sie explizit, dem Compiler mitzuteilen, wie die DLL importiert werden soll. Ex:
%Vor%Sehen Sie sich die MSDN-Bibliothek an: Ссылка
Nach ihnen erhalten Sie eine Ausnahme, wenn Sie versuchen, ein Ausnahmeobjekt auszuwerten, wenn keine Ausnahme aufgetreten ist. Da Sie sich jedoch im catch-Block befinden, ist eine Ausnahme aufgetreten ... Ohne Ihren Code zu sehen, ist es schwer zu erraten, aber ist es möglicherweise möglich, dass mehrere Threads ausgeführt werden und die Ausnahme von einem Thread verbraucht wurde, bevor sie verarbeitet wird von einem anderen? Es macht keinen Sinn, aber es lohnt sich. Eine sichere (r) Option würde sicherstellen, dass Sie überprüfen, ob die Ausnahme in Ihrem Logger null ist, bevor Sie versuchen, Details daraus zu erhalten. Sehenswert: Die HttpRequestException enthält eine innere Ausnahme, die die Quelle Ihrer Nullreferenz sein könnte? Ich spekuliere nur.
Ich stimme mit Trapsuutjies überein, es gibt wahrscheinlich keine Ausnahme. Um diesen Fehler zu unterdrücken, drücken Sie Strg + Alt + E, erweitern Sie den verwalteten Debugging-Assistenten und deaktivieren Sie LoadFromContext.
Als ich diesen Fehler sah, bekam ich auch Fehler im Debugger "Fehler beim Auswerten". Das führte mich zu diesem Beitrag von Rick Strahl, der sagte, dass es ein Fehler in der ursprünglichen Version von Visual Studio 2013 war.
Als ich die Maschine überprüfte, auf der ich war, hatte es tatsächlich VS2013, ohne irgendwelche der Updates zu installieren. Durch die Installation der Updates wurde das Problem behoben.
Ich löste das gleiche Problem in diesen Schritten:
Schritt 1) Wenn Sie Ihre benutzerdefinierte DLL in C ++ mit Visual Studio programmieren, dann legen Sie auf der Eigenschaftenseite Ihres Projekts die Common Language Runtime Support (/clr)
Parameter auf Common Language Runtime Support (/clr)
.
Schritt 2) Um die Verzögerung in .h
Datei zu nutzen, verwenden Sie __declspec(dllexport)
keyword wie unten:
Schritt 3) Erstellen und exportieren Sie die DLL-Datei und verwenden Sie dann die Dependency Walker -Software, um Ihre Funktion EntryPoint zu erhalten.
step4) DLL-Datei importieren Im C # -Projekt die Variable EntryPoint und CallingConvention wie folgt setzen:
Tags und Links .net c# visual-studio-2012 debugging exception