原來運行相同的命令通過IVsUIShell工作:??
Dim cmd As EnvDTE.Command
Dim shell As Microsoft.VisualStudio.Shell.Interop.IVsUIShell
Dim arg As Object
Dim guid As System.Guid
Dim serviceProvider As System.IServiceProvider
serviceProvider = New Microsoft.VisualStudio.Shell.ServiceProvider(CType(DTE, Microsoft.VisualStudio.OLE.Interop.IServiceProvider))
shell = serviceProvider.GetService(GetType(Microsoft.VisualStudio.Shell.Interop.SVsUIShell))
cmd = DTE.Commands.Item("Edit.GoToDefinition", 0)
guid = New System.Guid(cmd.Guid)
shell.PostExecCommand(guid, cmd.ID, 0, arg)
代碼像Visual Commander一樣工作。從Visual Studio ma運行它CRO公司IDE,您需要將引用添加到
Microsoft.VisualStudio.OLE.Interop.dll
Microsoft.VisualStudio.Shell.10.0.dll
Microsoft.VisualStudio.Shell.Interop.dll
Microsoft.VisualStudio.Shell.Interop.8.0.dll
Microsoft.VisualStudio.Shell.Interop.9.0.dll
,並添加您首先需要將這些文件複製到Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies directory引用。
帶有DTE.ExecuteCommand(「Edit.GoToDefinition」)的TemporaryMacro在沒有第二個參數的機器上工作得很好。 –
什麼版本的VS?什麼語言?你是如何運行宏的? – Llaves
VS 2010 Ultimate,C#,宏 - 運行TemporaryMacro。現在嘗試一個C++項目,並得到「命令需要一個參數」的錯誤。 –