Visual studio 显示来自resharper插件的异常消息

Visual studio 显示来自resharper插件的异常消息,visual-studio,resharper,Visual Studio,Resharper,在开发Resharper插件的过程中,我希望在用户错误地使用上下文操作时向用户显示一条错误消息。有没有办法在VisualStudio中弹出一个窗口,向用户传达Resharper异常消息?我正在用Resharper 8和VS 2012开发一个插件您可以始终使用MessageBox-Resharper还提供了一个MessageBox静态类,该类提供了许多帮助器方法,使您能够轻松显示所需内容。它还允许添加“消息框处理程序”,以便您在测试期间不会实际显示消息框 或者,如果您正在创建一个上下文操作,并且您

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

您可以始终使用
MessageBox
-Resharper还提供了一个
MessageBox
静态类,该类提供了许多帮助器方法,使您能够轻松显示所需内容。它还允许添加“消息框处理程序”,以便您在测试期间不会实际显示消息框

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

您可以返回如下内容:

return tc => myLocks.QueueReadLock("MyContextAction", () => {
    myTooltipManager.Show("Something went wrong!", 
      lifetime => new TextControlPopupWindowContext(lifetime, tc, myLocks, myActionManager);
  });
这使用了许多字段:
IShellLocks myLocks
ITooltipManager myTooltipManager
IActionManager myActionManager
。这些可以通过ReSharper的组件模型注入到组件的构造函数中,也可以通过
solution.GetComponent
等获得

发生的情况是,您正在返回一个在
ITextControl
中执行的操作,该操作会立即将另一个要在UI线程上运行的操作排队,并执行读取锁定。第二个操作告诉工具提示管理器将错误消息显示为工具提示,并提供用于创建弹出窗口上下文的工厂方法(通过调用
show
来创建和处理
life
参数,并允许清除上下文)


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

您可以始终使用
MessageBox
-ReSharper还提供了一个
MessageBox
静态类,该类提供了许多帮助方法以使其变得简单来显示你想要的。它还允许添加“消息框处理程序”,以便您在测试期间不会实际显示消息框

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

您可以返回如下内容:

return tc => myLocks.QueueReadLock("MyContextAction", () => {
    myTooltipManager.Show("Something went wrong!", 
      lifetime => new TextControlPopupWindowContext(lifetime, tc, myLocks, myActionManager);
  });
这使用了许多字段:
IShellLocks myLocks
ITooltipManager myTooltipManager
IActionManager myActionManager
。这些可以通过ReSharper的组件模型注入到组件的构造函数中,也可以通过
solution.GetComponent
等获得

发生的情况是,您正在返回一个在
ITextControl
中执行的操作,该操作会立即将另一个要在UI线程上运行的操作排队,并执行读取锁定。第二个操作告诉工具提示管理器将错误消息显示为工具提示,并提供用于创建弹出窗口上下文的工厂方法(通过调用
show
来创建和处理
life
参数,并允许清除上下文)


您还可以查看
ShowAtCaret
扩展方法以
ITooltipManager
-我不记得
Show
会将工具提示放在哪里。

只使用
MessageBox.Show
有什么不对?或者您是否有使此方法不可行的需求?仅使用
MessageBox.Show有什么错?或者您是否有使此方法不可行的要求?