gpt4 book ai didi

.net - CompileAssemblyFromSource 生成的程序集异常没有行号

转载 作者:行者123 更新时间:2023-12-03 03:09:21 27 4
gpt4 key购买 nike

我的应用程序具有脚本功能,我可以使用 CodeDomProvider.CompileAssemblyFromSource 从用户的脚本编译内存中程序集。它类似于 this answer 中的描述。 .

它工作得很好,但是从脚本代码抛出的任何异常在堆栈跟踪中都没有行号。我尝试设置compilerParameters.IncludeDebugInformation = true,但它仍然不包含行号。

是否可以从内存中程序集中获取异常的行号?

以下是我用来编译程序集的关键代码:

        CompilerParameters compilerParameters =
compilerInfo.CreateDefaultCompilerParameters();
compilerParameters.GenerateInMemory = true;
compilerParameters.GenerateExecutable = false;
compilerParameters.IncludeDebugInformation = true;

...

CodeDomProvider codeProvider = compilerInfo.CreateProvider();
CompilerResults compilerResults =
codeProvider.CompileAssemblyFromSource(
compilerParameters,
new string[] { sourceCode });

最佳答案

我们通过将源代码写入临时文件,然后使用该文件而不是内存中的字符串来编译代码来解决这个问题。这为我们提供了有意义的调试信息,否则我们无法获得这些信息。

关于.net - CompileAssemblyFromSource 生成的程序集异常没有行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911840/

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