我怎样才能 运行 旧 VB 最近的 Visual Studio 宏?

How can I run old VB Macros in recent Visual Studio?

我需要 运行 VB 中的旧 visual studio 宏。但我发现 Visual Studio 中不再支持宏,但这里有宏的扩展:https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MacrosforVisualStudio

任何想法我如何 运行 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 或扩展名为 Visual Commander 的 C#。