2011-11-09 8 views
9

Ho uno script PowerShell e caricare una DLL tramite [Reflection.Assembly] :: LoadDebug C# dll quando caricato nel processo di PowerShell? È possibile?

Voglio mettere brakepoints nel codice sorgente di quella dll, aggiungere orologi ecc

inerenti alle PowerShell processo non ha funzionato (in realtà ho provato l'iso powershell). Non ci sono altri processi a cui fare riferimento. Qualche idea? Una volta un'eccezione (è la mia eccezione, quindi questo dovrebbe accadere) è apparso in VS ma non ho potuto riprodurlo.

+2

Ho sicuramente eseguito il debug del codice C# collegandolo al processo powershell.exe. Non ricordo di averlo mai fatto con l'ISE, ma non so perché questo non funzionerebbe. – OldFart

risposta

8

In alternativa, è possibile creare una classe helper nella libreria:

namespace Something { 
    public static class DebugHelper { 
     public static void AttachDebugger() { 
      System.Diagnostics.Debugger.Launch(); 
     } 
    } 
} 

Quindi, è possibile chiamare quel metodo da PowerShell, e si otterrà il debugger.

+2

Ho notato che a volte non funziona. VS si avvia ma l'eccezione non viene catturata. Nota che ho usato questa linea direttamente da power shell: [System.Diagnostics.Debugger] :: Launch() – naeron84

+2

La mia idea era di usare [Something.DebugHelper] :: AttachDebugger(), quindi hai il debugger nel tuo codice e quindi è facile aggiungere punti di interruzione, ma probabilmente la soluzione è ancora più semplice. –

Problemi correlati