Ich habe eine Anwendung, die c#-Quelldateien dynamisch lädt und sie als Plugins ausführt. Wenn ich die Hauptanwendung im Debug-Modus ausführe, ist es dann möglich, in der dynamischen Assembly zu debuggen? Offensichtlich ist das Setzen von Haltepunkten problematisch, da der Quellcode nicht Teil des ursprünglichen Projekts ist, aber sollte ich in der Lage sein, in den Code einzugreifen oder bei Ausnahmen zu unterbrechen?
Gibt es eine Möglichkeit, Codedom dazu zu bringen, PDBs dafür zu generieren oder ähnliches?
Hier ist der Code, den ich für die dynamische Kompilierung verwende.
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);
0 Stimmen
Nur aus Neugier (ich habe nie wirklich mit dem CodeDom-Zeug herumgespielt), was passiert, wenn Sie versuchen, ein System.Diagnostics.Debugger.Break(); irgendwo in Ihrem Code zu setzen? Können Sie dann in den Code einsteigen?
0 Stimmen
Das hat funktioniert, aber nur mit den Optionen in der akzeptierten Antwort.
0 Stimmen
Ich habe diese Frage aus Versehen dupliziert (Codedom war nicht das Schlüsselwerk, nach dem ich gesucht habe). stackoverflow.com/questions/1593920/ . Ich habe eine Lösung mit einer Schnittstelle hinzugefügt. Ich hoffe, es hilft...