Как я могу запустить старые макросы VB в недавней Visual Studio? - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно запустить старый макрос Visual Studio, который находится в VB. Но я обнаружил, что макросы больше не поддерживаются в Visual Studio, но здесь есть расширение для макросов: https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MacrosforVisualStudio

Любые идеи, как я могу запустить следующее в Visual Studio 2017 Community Edition или преобразовать его в 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

1 Ответ

0 голосов
/ 01 июля 2018

Я не пробовал расширение Macros самостоятельно, но преобразование вашего старого макроса VB в JS должно быть простым. Глобальное поле DTE из макроса VB теперь называется 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 # с расширением Visual Commander .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...