【问题标题】:Debugging dynamically compiled code with Roslyn使用 Roslyn 调试动态编译的代码
【发布时间】:2016-06-13 21:27:00
【问题描述】:

我正在使用Roslyn 动态编译任意*.cs 文件。我能够生成DLLsPDBs 并通过反射在加载的程序集中执行方法,但是当从System.Diagnostics.Debugger.Launch() 附加VS 调试器时,我收到“源不可用”错误。 VS 中的“模块”窗口显示符号已成功加载。有问题的源代码存在于同一解决方案下的项目中,但直到运行时才编译。

有人成功完成这项工作吗?谢谢!

复制:https://gist.github.com/toraora/a9d4eb8679383fe659da04d3be5c2d6e(等我在这台机器上设置好SSH密钥后,我会提出实际的解决方案)

【问题讨论】:

  • 您介意发布一个最小示例来重现该问题吗?当然,我可以自己写,但我很懒 :-)
  • 转载发布!
  • 问题很容易发现:srcfile 的唯一用途是在 File.ReadAllText 中。由于您没有向 Roslyn 提供任何知道源文件是什么的方法,因此 Roslyn 无法生成允许找到该源文件的调试信息。不过,对于不太熟悉 Roslyn 的 API 的人来说,解决方案并不是那么明显。

标签: c# roslyn


【解决方案1】:

啊,所以解决办法是:

CSharpSyntaxTree.ParseText(File.ReadAllText(srcfile), path: srcfile, encoding: System.Text.Encoding.UTF8)

谢谢@hvd!

【讨论】:

    猜你喜欢
    • 2011-12-12
    • 2020-01-21
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2011-06-10
    • 2016-06-19
    相关资源
    最近更新 更多