我需要运行VB中的旧Visual Studio宏。但是我发现Visual Studio不再本机支持宏,但是这里有一个宏扩展:https://marketplace.visualstudio.com/items?itemName=VisualStudioPlatformTeam.MacrosforVisualStudio
Any Ideas如何在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
答案 0 :(得分:2)
我自己没有尝试过Macros扩展,但是将旧的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();
或者,如果您不想转换代码,则可以直接使用扩展名为Visual Commander的VB .NET或C#。