如何从 MonoDevelop 插件中写入工具输出板?

How to write to the Tool Output Pad from within a MonoDevelop Add-in?

我正在为 Xamarin Studio 开发一个 MonoDevelop 插件,我正在尝试写入工具输出 window(又名 Pad)。工具输出 window 是代码生成器将其输出写入的地方,因此它必须是可能的。

我已经尝试写入控制台、跟踪和调试,以及使用 Workbench.StatusBar.ShowMessage(),但其中 none 写入工具输出 window。

以下代码将更新状态栏并将一些文本写入工具输出 window。

using (var monitor = MonoDevelop.Ide.IdeApp.Workbench.ProgressMonitors.GetToolOutputProgressMonitor (false)) {

    monitor.BeginTask ("Running...", 1);
    monitor.Log.WriteLine ("Test");
    monitor.EndTask ();
    monitor.ReportSuccess ("Done.");
}

监视器提供了一种更新状态栏的方法,使用 BeginTask 和 ReportSuccess、ReportError 方法。它还提供了一种使用 Log 对象上的方法将文本直接写入工具输出 window 的方法。

如果您要创建自定义工具,则不需要做所有这些额外的工作。您可以实现 ISingleFileCustomTool 接口,它会向您传递一个进度监视器。然后在插件的 xml 文件中注册自定义工具:

<Extension path = "/MonoDevelop/Ide/CustomTools">
    <Tool name="ResXFileCodeGenerator" type="MonoDevelop.Ide.CustomTools.ResXFileCodeGenerator" />
    <Tool name="PublicResXFileCodeGenerator" type="MonoDevelop.Ide.CustomTools.PublicResXFileCodeGenerator" />
</Extension>