编写Visual Studio 2010插件,想在代码编辑器中显示像Resharper这样的工具箱

Tom*_*uλa 10 c# wpf plugins mef visual-studio-2010-beta-2

我想为Visual Studio 2010编写一个插件,但事实上我遇到了一些问题.我想做的事情似乎很简单,我想在代码编辑器中选择文本时会出现一个小工具箱,例如Resharper(带有帮助重构的菜单的小笔)或者像这样:

http://www.axtools.com/products-vs2010-extensions.php?tab=selection-popup

我想知道 :

  1. 是否有anu Visual Studio模板有助于启动?我尝试使用"编辑器视口装饰",但我不确定.

  2. 我应该从启动工具箱开始,还是可以从系统工具箱中显示一些按钮?在链接的axtools插件中,它是一个定制的工具箱或系统?

  3. 如何检测文本被选中?

我现在没有其他问题了.我是网络开发者,所以编写一个visual studio插件对我来说是个新事物.

提前致谢.

Noa*_*rds 4

我可以回答这个问题的两个部分:

  1. SDK 附带的“编辑器文本装饰”模板是一个很好的起点。完成后,请看一下我为一个假多用户打字演示编写的可视化管理器:AgentBadgeVisualManager.cs。这向您展示了如何将某种类型的装饰放置在文本附近(尽管不是直接在文本下方)。您还需要查看ViewCreationListener.cs文件,其中包含AdornmentLayerDefinition视觉管理器的属性(从项目模板获得的默认值来看,最重要的更改是属性Order,以确保您的装饰显示在任何文本的顶部)。
  2. 我对此一无所知,抱歉:(您会希望这是某种 WPF UIElement,但除此之外,这实际上取决于您。
  3. ITextView,您将作为IWpfTextViewCreationListener示例的一部分实现(它被传递到),您可以像这样AgentBadgeVisualManager订阅SelectionChanged事件:

    view.Selection.SelectionChanged += (sender, args) => /* call methods to update your adornment here */;

    请注意,当选择为空并跟随插入符号时,该事件不会被触发,因此如果您想跟踪它,您还需要监听插入符号更改事件。但是,如果您只关心 a) 当选择非空时,或 b) 当选择在空和非空之间变化时,该事件就足够了。

有关可扩展性的更多一般信息,您可以查看我在github 页面上编写的其他扩展,了解我如何在博客上编写它们,查看VSX 示例页面codeplex 上的编辑器示例页面