Sto utilizzando Roslyn
per compilare in modo dinamico file arbitrari *.cs
. Sono in grado di generare il DLLs
e PDBs
ed eseguire i metodi all'interno degli assembly caricati tramite riflessione, ma quando si collega il debugger VS da System.Diagnostics.Debugger.Launch()
, ricevo errori di "origine non disponibile". La finestra 'Modules' in VS mostra che i simboli sono stati caricati con successo. La fonte in questione vive in un progetto con la stessa soluzione, ma non è compilata fino al runtime.Codice di debug compilato in modo dinamico con Roslyn
Qualcuno ha funzionato correttamente? Grazie!
riproduzione: https://gist.github.com/toraora/a9d4eb8679383fe659da04d3be5c2d6e (Metterò la soluzione reale quando finisco la creazione di chiavi SSH su questa macchina)
Ti dispiacerebbe postare un esempio minimo per riprodurre il problema? Certo, potrei scriverlo da solo, ma sono pigro :-) –
riproduzione postata! –
Il problema è facile da individuare: il tuo unico uso di 'srcfile' è in' File.ReadAllText'. Dato che non si fornisce a Roslyn alcun modo per sapere quale sia il file sorgente, Roslyn non può in alcun modo generare informazioni di debug che consentano di trovare quel file sorgente. La soluzione non è così ovvia per qualcuno che non ha familiarità con le API di Roslyn. – hvd