标题几乎说明了一切。我正在编写一个Visual Studio扩展,在其中创建自定义命令。在此命令的回调中,我需要在逻辑中的某个时刻调用“解决方案级别的构建命令”。我在OleMenuCommandService类中找到了一个 GlobalInvoke(CommandID commandID)方法。 CommandID带有两个参数“ CommandID(Guid menuGroup,int commandID)”。我找不到构建菜单组的菜单组向导。首先,我对上述方法是否正确?如果否,请指导我采取正确的方法。如果是,我如何找到调用Build命令所需的Guid和ID?预先感谢。
答案 0 :(得分:0)
您可以致电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
答案 1 :(得分:0)
如果您需要在构建事件的开始/结束时做一些事情,则可以执行以下操作来捕获事件:
mDte.Events.BuildEvents.OnBuildBegin += OnBuildBegin;
mDte.Events.BuildEvents.OnBuildDone += OnBuildDone;
或者您可以通过编程方式获取构建结果,并检查构建成功还是失败。如果构建成功, exitCode 将为0,否则为0:
int exitCode = DTEObj.Solution.SolutionBuild.LastBuildInfo;