我想知道是否以及如何能够在调试上下文中使用 Mono 编译器作为服务(请参阅here和here),以便在调试器中运行时查询/修改/可视化等对象。目前,根据this SO post,Roslyn CTP 不支持此功能。
是的,这是完全可能的。我无法告诉您如何实现这一点的确切细节,但请看一下 MonoDevelop,它实际上从 v2.8(或更早)开始实现了您的想法。在 MonoDevelop 中,您有一个可用的 REPL Pad,它允许您在应用程序因断点而停止的同一上下文中输入 C# 代码。我附上了 MD 在调试视图中的简单屏幕截图,并且 REPL pad 打开。由于 MD 是开源的,您可以查看其实现方式的源代码并删除您需要的部分。
我认为这应该是可行的,因为Mono Soft Debugger是Mono运行时的一部分,所以你可以使用“调试器代理”:
调试器代理是 Mono 运行时内的一个模块,它提供 为客户端程序提供调试服务。
因此,一种替代方案可能是尝试与编译器中的 Mono Soft Debugger 作为服务(在 Mono 运行时运行)进行交互。
由于 Mono Soft 调试器用于 MonoDevelop IDE,您还可以调查该 IDE 是否可用于您正在寻找的内容。