【发布时间】:2010-10-26 22:03:15
【问题描述】:
我有一个动态加载 c# 源文件并将它们作为插件运行的应用程序。当我在调试模式下运行主应用程序时,是否可以调试到动态程序集中?显然设置断点是有问题的,因为源不是原始项目的一部分,但我应该能够进入或中断代码的异常吗?
有没有办法让 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(); 会发生什么?在你的代码的某个地方?那你能进去吗?
-
这行得通,但仅限于接受答案中的选项。
-
我无意中重复了这个问题(codedom 不是我寻找的关键)。 stackoverflow.com/questions/1593920/…。我添加了一个涉及接口的解决方案。希望对您有所帮助...
标签: c# .net debugging code-generation