Ho un'applicazione che carica i file di origine C# in modo dinamico e li esegue come plugin. Quando eseguo l'applicazione principale in modalità di debug, è possibile eseguire il debug nell'assembly dinamico? Ovviamente l'impostazione dei punti di interruzione è problematica, dal momento che la sorgente non fa parte del progetto originale, ma dovrei essere in grado di intervenire o interrompere le eccezioni per il codice?Come eseguire il debug/break in code codice compilato
C'è un modo per ottenere la codifica per generare PDB per questo o qualcosa del genere?
Ecco il codice che sto usando per la compliazione dinamica.
CSharpCodeProvider codeProvider = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
//codeProvider.
ICodeCompiler icc = codeProvider.CreateCompiler();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;
parameters.CompilerOptions = string.Format("/lib:\"{0}\"", Application.StartupPath);
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");
CompilerResults results = icc.CompileAssemblyFromSource(parameters, Source);
DLL.CreateInstance(t.FullName, false, BindingFlags.Default, null, new object[] { engine }, null, null);
Per curiosità (non ho mai veramente incasinato le cose di CodeDom) cosa succede se provi a mettere un System.Diagnostics.Debugger.Break(); da qualche parte nel tuo codice? Puoi quindi entrarci? – BFree
ha funzionato, ma solo con le opzioni nella risposta accettata. –
Ho duplicato questa domanda per inavvertenza (la codifica non era la chiave che cercavo). http://stackoverflow.com/questions/1593920/debugging-a-generated-net-assembly-from-within-the-application-that-generated-it/1594910#1594910. Ho aggiunto una soluzione che implica un'interfaccia. Spero che aiuti ... – jdehaan