Verhindert, dass Debugger bei einer Exception in einer Compiled LambdaExpression gestoppt wird

8

In meinem Programm erstelle ich dynamische Lambda-Ausdrücke und kompiliere sie dann zu Delegaten. Diese Delegaten werden dann aufgerufen, um Informationen aus meinen Entitäten zu extrahieren. Einige der Delegierten können Ausnahmen auslösen. Ich habe die Ausnahme abgefangen, bei der ich den Delegierten anrufe. Ich habe "Nur meinen Code aktivieren" aktiviert und das [DebuggerNonUserCode] -Attribut auf den Speicherort der LambdaExpression angewendet, wo sie kompiliert wurde und wo sie aufgerufen wurde. Da in Debug & gt; Exceptions & gt; Common Language Runtime Exceptions das Kontrollkästchen Thrown aktiviert ist, stoppt Visual Studio jedoch immer den Fehler, was für die Entwickler eine große Unannehmlichkeit darstellt.

Es scheint, dass [DebuggerNonUserCode] irgendwie auf den kompilierten Delegaten angewendet werden sollte, aber wie? Oder irgendeinen anderen Vorschlag?

Danke.

    
Alireza 25.06.2012, 05:52
quelle

1 Antwort

1

Soweit ich weiß, können Sie Attribute nicht auf anonyme Methoden anwenden, die mit Ausdrücken erzeugt werden, abgesehen von möglicherweise etwas schrecklichem Herumalbern mit der dynamischen Typengenerierung.

Ein möglicher Vorschlag wäre jedoch, in das Ausnahmemenü in Debug > Exceptions zu wechseln und auszuwählen, welche Ausnahmen Sie speziell aufbrechen möchten. Wenn Ihre Ausdrücke dazu neigen, Ausnahmen bestimmter Art auszulösen, können Sie das Brechen dieser Ausnahmen einfach deaktivieren.

    
GregRos 25.06.2012, 08:21
quelle