Visual studio 如何在最近的Visual Studio中运行旧的VB宏?

Visual studio 如何在最近的Visual Studio中运行旧的VB宏?,visual-studio,visual-studio-macros,Visual Studio,Visual Studio Macros,我需要在VB中运行一个旧的visual studio宏。但我发现Visual Studio不再支持宏,但这里有一个宏扩展: 我如何在Visual Studio 2017社区版中运行以下内容,或者如何将其转换为新扩展支持的javascript Sub TemporaryMacro() DTE.ActiveDocument.Selection.StartOfDocument() Dim returnValue As vsIncrementalSearchResult While True D

我需要在VB中运行一个旧的visual studio宏。但我发现Visual Studio不再支持宏,但这里有一个宏扩展:

我如何在Visual Studio 2017社区版中运行以下内容,或者如何将其转换为新扩展支持的javascript

Sub TemporaryMacro()
DTE.ActiveDocument.Selection.StartOfDocument()
Dim returnValue As vsIncrementalSearchResult
While True
    DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.StartForward()
    returnValue = DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.AppendCharAndSearch(AscW("{"))
    DTE.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.Exit()
    If Not (returnValue = vsIncrementalSearchResult.vsIncrementalSearchResultFound) Then
        Return
    End If
    DTE.ExecuteCommand("Debug.ToggleBreakpoint")
    DTE.ExecuteCommand("Edit.GotoBrace")
    DTE.ActiveDocument.Selection.CharRight()
End While
End Sub

我自己没有尝试宏扩展,但是将旧的VB宏转换为JS应该很简单。VB宏中的全局字段DTE现在称为DTE。 未测试,但JS宏可能是:

function TemporaryMacro() {
    dte.ActiveDocument.Selection.StartOfDocument();
    var returnValue;
    while (true) {
        dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.StartForward();
        returnValue = dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.AppendCharAndSearch("{".charCodeAt(0));
        dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.Exit();
        if(returnValue != vsIncrementalSearchResult.vsIncrementalSearchResultFound) {
            return;
        }
        dte.ExecuteCommand("Debug.ToggleBreakpoint");
        dte.ExecuteCommand("Edit.GotoBrace");
        dte.ActiveDocument.Selection.CharRight();
    }
}
您可能需要调用该函数,因此将此行放在上述代码之前:

TemporaryMacro();

或者,如果您不想转换代码,可以直接使用VB.NET或C#with extension。

我自己没有尝试宏扩展,但是将旧的VB宏转换为JS应该很简单。VB宏中的全局字段DTE现在称为DTE。 未测试,但JS宏可能是:

function TemporaryMacro() {
    dte.ActiveDocument.Selection.StartOfDocument();
    var returnValue;
    while (true) {
        dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.StartForward();
        returnValue = dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.AppendCharAndSearch("{".charCodeAt(0));
        dte.ActiveDocument.ActiveWindow.Object.ActivePane.IncrementalSearch.Exit();
        if(returnValue != vsIncrementalSearchResult.vsIncrementalSearchResultFound) {
            return;
        }
        dte.ExecuteCommand("Debug.ToggleBreakpoint");
        dte.ExecuteCommand("Edit.GotoBrace");
        dte.ActiveDocument.Selection.CharRight();
    }
}
您可能需要调用该函数,因此将此行放在上述代码之前:

TemporaryMacro();

或者,如果不想转换代码,可以直接使用VB.NET或带有扩展名的C#。

什么对象是
DTE
?如果您安装了任何库DTE,它可能会在VBA(即Excel)中运行is@Nick:DTE是Visual Studio自动化对象模型中的顶级对象。它在VS宏和加载项中大量使用(现在都不受支持)。它仍然由VisualStudio扩展使用。查看什么对象是
DTE
?如果您安装了任何库DTE,它可能会在VBA(即Excel)中运行is@Nick:DTE是Visual Studio自动化对象模型中的顶级对象。它在VS宏和加载项中大量使用(现在都不受支持)。它仍然由VisualStudio扩展使用。查看宏代码不起作用,但感谢扩展建议,因为它以另一种方式解决了问题。宏代码不起作用,但感谢扩展建议,因为它以另一种方式解决了问题。