Hinzufügen eines Debuggers zu Code, der programmgesteuert in einer anderen App-Domäne ausgeführt wird

8

Ich arbeite an einer Visual Studio-Erweiterung und eine seiner Funktionen erstellt eine neue App-Domäne und lädt eine Assembly in diese App-Domäne. Dann führt es einige Funktionen in der App-Domäne aus. Was ich gerne tun würde, und bin mir nicht sicher, ob das möglich ist, ist, dass meine Erweiterung einen Debugger an den Code anfügt, der in der neuen App-Domain läuft. Wenn dieser Code fehlschlägt, kann ich wirklich sehen, was vor sich geht. Momentan fliege ich blind und das Debuggen der dynamisch geladenen Baugruppe ist ein Schmerz.

Ich habe also eine Klasse, die meine App-Domain so erstellt:

%Vor%

Und dann erstellt ein Objekt wie folgt:

%Vor%

MyCollection macht so etwas im Konstruktor:

%Vor%

Nun wurde diese Assembly in Test_AppDomain geladen, da das Objekt MyCollection in dieser Domäne erstellt wurde. Und es ist diese geladene Assembly, an die ich den Debugger anhängen kann.

Irgendwann erzeugt myCollection eine Instanz eines Objekts und verknüpft einige Ereignisse:

%Vor%

Und im Grunde, wo ich den Handler für RunRequested habe und es currentObject?.Run() läuft, möchte ich einen Debugger haben, obwohl es wahrscheinlich kein Problem wäre (und möglicherweise sogar besser funktioniert), wenn der Debugger angehängt wurde früher.

Gibt es einen Weg, dies zu erreichen? Ist es möglich, einen Debugger programmatisch anzuhängen, wenn der Benutzer das Ereignis auslöst, das zur Run -Funktion des in der neuen aufgerufenen AppDomain erstellten Objekts führt? Wie bekomme ich den Debugger dazu (und nicht die Erweiterung selbst)?

Ich habe so etwas versucht:

%Vor%

Aber es scheint, dass die ID von System.Diagnostics.Process.GetCurrentProcess().Id nicht in LocalProcesses existiert?

    
Matt Burland 05.10.2016, 15:02
quelle

0 Antworten

Tags und Links