gpt4 book ai didi

c# - 如何在 codedom 编译代码中调试/中断

转载 作者:IT王子 更新时间:2023-10-29 04:33:05 26 4
gpt4 key购买 nike

我有一个动态加载 C# 源文件并将它们作为插件运行的应用程序。当我在 Debug模式下运行主应用程序时,是否可以调试到动态程序集中?显然设置断点是有问题的,因为源代码不是原始项目的一部分,但我是否应该能够进入或中断代码的异常?

有没有办法让 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);

最佳答案

尝试以下选项:

parameters.GenerateInMemory = false; //default
parameters.TempFiles = new TempFileCollection(Environment.GetEnvironmentVariable("TEMP"), true);
parameters.IncludeDebugInformation = true;

我不确定这是否适用于您的情况,但如果适用,您可以使用条件编译指令围绕此参数,以便它仅在 Debug模式下转储生成的程序集。

关于c# - 如何在 codedom 编译代码中调试/中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com