从resharper插件显示异常消息

时间:2013-10-14 21:10:43

标签: visual-studio resharper

在开发Resharper插件的过程中,我想在用户错误地使用上下文操作时向用户显示错误消息。有没有办法在Visual Studio中弹出一个窗口,将Resharper异常消息传递给用户?我正在使用Resharper 8和VS 2012开发一个插件

1 个答案:

答案 0 :(得分:4)

您始终可以使用MessageBox - ReSharper还提供了一个MessageBox静态类,它提供了许多辅助方法,可以轻松显示您想要的内容。它还允许添加“消息框处理程序”,以便在测试期间实际上不显示消息框。

或者,如果您正在创建上下文操作,并且(间接)派生​​自BulbActionBase,则您的ExecutePsiTransaction方法(应该完成所有工作)可以返回{{1 }}。这允许您返回在快速修复/上下文操作完成后将执行的操作,该操作可以是定位插入符,更改选择,执行模板或将工具提示显示为错误。

您可以返回以下内容:

Action<ITextControl>

这使用了多个字段:return tc => myLocks.QueueReadLock("MyContextAction", () => { myTooltipManager.Show("Something went wrong!", lifetime => new TextControlPopupWindowContext(lifetime, tc, myLocks, myActionManager); }); IShellLocks myLocksITooltipManager myTooltipManager。这些可以通过ReSharper的组件模型注入到组件的构造函数中,或者您可以使用IActionManager myActionManager等来获取它们。

发生的事情是,您正在返回一个接受solution.GetComponent<IShellLocks>的操作,并在UI线程上立即将另一个操作排队,并执行读取锁定。第二个操作告诉工具提示管理器将错误消息显示为工具提示,并提供一个工厂方法来创建弹出窗口上下文(ITextControl参数是通过调用lifetime创建和处理的,并且允许清理上下文。)

您还可以查看Show ShowAtCaret扩展方法 - 我不记得ITooltipManager将放置工具提示的位置。