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

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

我想知道 :

  • 是否有有助于启动的Visual Studio模板?我尝试使用“编辑器视口(viewport)装饰”,但是我不确定。
  • 我应该从启动工具箱开始设计,还是可以从系统工具箱中显示一些按钮?在来自链接的axtools插件中,它是一个定制的工具箱或系统箱?
  • 如何检测是否选择了文本?

  • 目前,我没有其他问题了。我是Web开发人员,所以编写Visual Studio插件对我来说是新事物。

    提前致谢。

    最佳答案

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

  • SDK附带的“编辑器文本修饰”模板是一个不错的起点。了解这些内容后,请看一下我为一个虚假的,多用户类型的演示示例AgentBadgeVisualManager.cs编写的视觉管理器。这向您展示了如何在文本附近(尽管不是直接在文本下方)放置某种装饰物。您还需要看一下ViewCreationListener.cs文件,该文件具有可视化管理器的AdornmentLayerDefinition(最重要的更改是Order属性,以确保您的装饰物是项目模板的默认设置,与项目模板的默认设置相比显示在任何文本的顶部)。
  • 我对此一无所知,对不起:(您希望它是某种WPF的UIElement,但是过去确实取决于您。
  • ITextView中,您将作为示例的一部分实现IWpfTextViewCreationListener(将其传递给AgentBadgeVisualManager),您可以订阅SelectionChanged事件,如下所示:
    view.Selection.SelectionChanged += (sender, args) => /* call methods to update your adornment here */;
    请注意,该事件将不会被当选择为空,并围绕如下插入符号,因此,如果你想跟踪被炒了,你还需要听插入记号改变事件。不过,如果你只关心一)当选择非空,或b)当选择空非空之间的变化,这种情况下就足够了。

  • 有关可扩展性的更多常规信息,您可以查看我在github page上编写的其他扩展,阅读有关如何编写on my blog的信息,查看VSX samples pageeditor samples page on codeplex

    关于c# - 编写Visual Studio 2010插件,想在代码编辑器中显示像Resharper这样的工具箱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2213103/

    10-09 20:49