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

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

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

我想知道 :

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

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

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

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

提前致谢。

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

  1. 随SDK一起提供的“Editor Text Adornment”模板是一个很好的起点。 一旦你有了这个,看看我为一个假的多用户输入演示编写的视觉管理器: 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上的编辑器示例页面 。