VS 2010可扩展性:创建扩展以自动将所选文本(代码)包装在注释中并在其上方添加注释

Mar*_*tin 6 vsx extensibility visual-studio-addins

我正在尝试开发一个类似于VS 2010中的"注释"工具栏按钮的扩展,但我想将所有文本标记为已注释,并在其上方添加注释.

这是一个例子.我知道这很简单,但它更容易.我的想法是有一些额外的工具栏按钮来标记不再使用的代码,标记有错误的代码......以及类似的东西......这可以在任务窗口中选取,因为它以TODO开头:

        // TODO MARTIN CODE NO LONGER USED
        /*if (myItem)
        {
            txtTest.Enabled = false;
            txtTest1.Value = 0;
            btnOk.Enabled = false;
        }*/
Run Code Online (Sandbox Code Playgroud)

我认为我需要使用:

       DTE.ActiveDocument
Run Code Online (Sandbox Code Playgroud)

和:

       (((TextDocument)myDoc).Selection.Text).
Run Code Online (Sandbox Code Playgroud)

然后再次写出代码,我需要做什么?

for*_*rir 4

这并不完全是您问题的答案,但这是您可以考虑的另一种选择。您可以定义宏来执行您需要的每个操作,然后将它们分配给工具栏按钮。一个示例宏是:

Sub TODOComment()
    DTE.ExecuteCommand("Edit.CommentSelection")
    DTE.ActiveDocument.Selection.LineUp()
    DTE.ActiveDocument.Selection.EndOfLine()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.Text = "// TODO "
End Sub
Run Code Online (Sandbox Code Playgroud)

这使用内置的注释部分功能,然后转到选择之前的行,在行末尾插入回车符并添加“TODO”注释。所以有明显的缺点(不要在文件顶部运行它),但它或多或少会做你所追求的事情。取消注释本质上是相同的(取消所有内容的注释,然后删除顶行)。

我不太了解自动化引擎,所以如果我想学习如何做这类事情,我倾向于做的是记录一个临时宏,执行我感兴趣的活动,然后调整输出以获得我所追求的结果。它往往可以节省大量时间来查找并不总是显而易见的文档。