Tengo una aplicación que carga los archivos fuente C# dinámicamente y los ejecuta como complementos. Cuando ejecuto la aplicación principal en modo de depuración, ¿es posible depurar en el ensamblaje dinámico? Obviamente, establecer puntos de interrupción es problemático, ya que la fuente no es parte del proyecto original, pero ¿debería ser capaz de intervenir o romper las excepciones para el código?Cómo depurar/romper código codificado compilado
¿Hay alguna forma de codificar para generar PDB para esto o algo así?
Aquí está el código que estoy usando para la compilación dinámica.
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);
Por curiosidad (nunca me he equivocado con las cosas de CodeDom) qué pasa si intentas poner System.Diagnostics.Debugger.Break(); en algún lugar de tu código? ¿Puedes entrar? – BFree
esto funcionó, pero solo con las opciones en la respuesta aceptada. –
Dupliqué esta pregunta por inadvertencia (el codificado no fue la clave que busqué). http://stackoverflow.com/questions/1593920/debugging-a-generated-net-assembly-from-within-the-application-that-generated-it/1594910#1594910. Agregué una solución que implica una interfaz. Espero que ayude ... – jdehaan