我有一个应用程序,它动态加载c#源文件并将它们作为插件运行。当我在调试模式下运行主应用程序时,是否可以调试到动态程序集?显然,设置断点是有问题的,因为源不是原始项目的一部分,但是我应该能够进入代码的异常还是破解代码的异常?如何在codedom编译代码中调试/中断
有没有办法让codedom为这个或其他东西生成PDB?
这是我用于动态编译的代码。
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);
出于好奇(我从来没有真正与CodeDom的东西搞砸)如果你尝试把一个System.Diagnostics.Debugger.Break();在你的代码中的某个地方?你能接着进入吗? – BFree 2009-05-17 23:36:53
这工作,但只有在接受答案的选项。 – 2009-06-04 15:46:03
我无意中重复了这个问题(codedom不是我寻找的关键工作)。 http://stackoverflow.com/questions/1593920/debugging-a-generated-net-assembly-from-within-the-application-that-generated-it/1594910#1594910。我添加了一个涉及界面的解决方案。希望它有帮助... – jdehaan 2009-10-20 14:16:58