Come posso eseguire il debug di un assembly COM C # quando viene chiamato da un'applicazione win32 nativa?

StackOverflow https://stackoverflow.com/questions/126868

Domanda

Sto sviluppando un assembly C # che deve essere chiamato tramite COM da un'applicazione Delphi 7 (iow, win32 nativa, non .net).

Finora sembra funzionare. Ho esportato un file TLB, l'ho importato nel mio progetto Delphi e posso creare il mio oggetto C # e chiamarne le funzioni.

Quindi è fantastico, ma presto davvero voglio usare Visual Studio per eseguire il debug del codice C # mentre è in esecuzione. Impostare punti di interruzione, scorrere il codice, tutto il resto.

Ho provato a violare il codice Delphi dopo la creazione dell'oggetto COM, quindi ho cercato un processo a cui VS potesse collegarsi, ma non riesco a trovarne uno

C'è un modo per impostare VS2008 per farlo? Preferirei solo essere in grado di premere f5 e fare in modo che VS avvii l'eseguibile Delphi, attendere che venga chiamato il codice C # e quindi collegarlo ad esso .. Ma potrei convivere con il collegamento manuale a un processo, suppongo.

Per favore, non dirmi che devo accontentarmi di MessageBox.Show ecc.

È stato utile?

Soluzione

Nella pagina delle proprietà del progetto VS2008, nella scheda Debug, è disponibile un'opzione per impostare un'azione di avvio diversa.

Questo può essere usato per eseguire un programma esterno (ad esempio la tua app Delphi) quando premi F5.

Altri suggerimenti

Inserire quanto segue nel metodo che si desidera eseguire il debug:

#if DEBUG
    if (!System.Diagnostics.Debugger.IsAttached)
        Debugger.Launch();
#endif

Quando vuoi eseguire il debug, crea una versione di debug e usala nella tua applicazione. Quando viene eseguito questo codice, viene visualizzata una finestra di dialogo che chiede se si desidera collegare un debugger.

Puoi semplicemente collegarti all'applicazione nativa e vedere normalmente il punto di interruzione, visualizzare pile, orologi ecc. Dovrai collegarti dopo aver creato l'oggetto COM.

Ho inserito un Afs MsgBox quando l'oggetto viene creato per interrompere il flusso dell'applicazione e quindi collegare il debugger.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top