如何在创建Visual Studio扩展时在我的自定义命令中调用Visual Studio中的解决方案级别构建命令?

问题描述 投票:1回答:2

标题基本概括了所有内容。我正在编写一个visual studio扩展,我正在创建一个自定义命令。在这个命令的回调中,我需要在我的逻辑中的某个时刻调用“解决方案级别构建命令”。我在OleMenuCommandService类中找到了一个GlobalInvoke(CommandID commandID)方法。 CommandID有两个参数“CommandID(Guid menuGroup,int commandID)”。我找不到Build Menu Group的Menu Group Guid。首先,我是否正确采用上述方法?如果不是,请引导我采用正确的方法。如果是,我如何找到调用Build命令所需的Guids和ID?提前致谢。

c# vsix vs-extensibility mpf
2个回答
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

0
投票

此外,如果您需要在构建事件的开头/结尾处执行某些操作,您可以执行以下操作来捕获事件:

mDte.Events.BuildEvents.OnBuildBegin += OnBuildBegin;
mDte.Events.BuildEvents.OnBuildDone += OnBuildDone;

或者,您可以以编程方式获取构建的结果,并检查构建是成功还是失败。如果构建成功,退出代码将为0,否则为0;

int exitCode = DTEObj.Solution.SolutionBuild.LastBuildInfo;
© www.soinside.com 2019 - 2024. All rights reserved.