Visual studio 如何在最近的Visual Studio中运行旧的VB宏?
我需要在VB中运行一个旧的visual studio宏。但我发现Visual Studio不再支持宏,但这里有一个宏扩展: 我如何在Visual Studio 2017社区版中运行以下内容,或者如何将其转换为新扩展支持的javascriptVisual 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
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扩展使用。查看宏代码不起作用,但感谢扩展建议,因为它以另一种方式解决了问题。宏代码不起作用,但感谢扩展建议,因为它以另一种方式解决了问题。