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