标题基本概括了所有内容。我正在编写一个visual studio扩展,我正在创建一个自定义命令。在这个命令的回调中,我需要在我的逻辑中的某个时刻调用“解决方案级别构建命令”。我在OleMenuCommandService类中找到了一个GlobalInvoke(CommandID commandID)方法。 CommandID有两个参数“CommandID(Guid menuGroup,int commandID)”。我找不到Build Menu Group的Menu Group Guid。首先,我是否正确采用上述方法?如果不是,请引导我采用正确的方法。如果是,我如何找到调用Build命令所需的Guids和ID?提前致谢。
你可以打电话给DTE.ExecuteCommand("Build.BuildSolution")
。
如果要使用guid和ID,请参阅以下VB示例:
Sub Run(DTE As DTE2, package As Package)
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("Build.BuildSolution", 0)
guid = New System.Guid(cmd.Guid)
shell.PostExecCommand(guid, cmd.ID, 0, arg)
End Sub
此外,如果您需要在构建事件的开头/结尾处执行某些操作,您可以执行以下操作来捕获事件:
mDte.Events.BuildEvents.OnBuildBegin += OnBuildBegin;
mDte.Events.BuildEvents.OnBuildDone += OnBuildDone;
或者,您可以以编程方式获取构建的结果,并检查构建是成功还是失败。如果构建成功,退出代码将为0,否则为0;
int exitCode = DTEObj.Solution.SolutionBuild.LastBuildInfo;