C++ Visual Studio能否在重建之前提示?

C++ Visual Studio能否在重建之前提示?,c++,visual-studio,C++,Visual Studio,有没有办法在重建之前让VisualStudio提示,或者有没有其他办法更容易避免点击重建而不是生成 当我右键单击一个项目,并在我打算单击“构建”时选择“在意外情况下重建”时,我已经浪费了无数个小时 这是针对本机C++解决方案的。据我所知,无法实现执行项目或解决方案重建的确认。 最好的选择是移动或删除关联菜单上的“重建”菜单项 右键单击VS中的菜单/工具栏区域,然后选择“自定义…”。。。 单击“命令”选项卡上的。 选择关联菜单单选按钮。 在下拉列表中查找项目和解决方案上下文菜单|项目。 单击上下文

有没有办法在重建之前让VisualStudio提示,或者有没有其他办法更容易避免点击重建而不是生成

当我右键单击一个项目,并在我打算单击“构建”时选择“在意外情况下重建”时,我已经浪费了无数个小时


这是针对本机C++解决方案的。

据我所知,无法实现执行项目或解决方案重建的确认。

最好的选择是移动或删除关联菜单上的“重建”菜单项

右键单击VS中的菜单/工具栏区域,然后选择“自定义…”。。。 单击“命令”选项卡上的。 选择关联菜单单选按钮。 在下拉列表中查找项目和解决方案上下文菜单|项目。 单击上下文菜单表示中的“重建”菜单项,并执行所需操作删除、上移或下移、开始新组等。。
要将菜单重置回默认状态,请单击“全部重置”按钮。

Visual Studio 2010允许自定义菜单。可以从项目关联菜单中删除重建项。或者,您可能只想将“重建”命令从“生成”命令中移开,以便不太可能意外地命中错误的项

从2010年开始

选择工具菜单 选择自定义。。。 选择“命令”选项卡 选择关联菜单单选按钮,然后选择Project and 解决方案上下文菜单|项目 选择“重建并移动”或“删除”。
添加名为“重建”的新子菜单


移动“删除”,然后将“真实重建”命令添加到此新菜单。如果愿意,请重命名它。

您可以为我的工具使用以下C扩展名:


它要求确认所有重建命令,如Build.RebuildSolution、Build.RebuildSelection和Build.ProjectPickerRebuild。

当我要生成时,我只是按F7键。诚然,它确实构建了整个解决方案,但这正是您通常想要的。另一种方法是为项目构建设置一个快捷方式,这样可以避免任何基于鼠标的混淆。是的,我想我必须养成使用F7构建整个解决方案的习惯。虽然在我的案例中,我经常构建单个项目。虽然我们的回答是相同的,但我还是对你的答案投了赞成票,因为这是你的第一个答案。让他们来你确定你没有因为他比你高而得票吗;
public class E : VisualCommanderExt.IExtension
{
    public void SetSite(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
    {
        events = DTE.Events;
        commandEvents = events.get_CommandEvents(null, 0);
        commands = DTE.Commands as EnvDTE80.Commands2;
        commandEvents.BeforeExecute += OnBeforeExecute;
    }

    public void Close()
    {
        commandEvents.BeforeExecute -= OnBeforeExecute;
    }

    private void OnBeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault)
    {
        string name = GetCommandName(Guid, ID);
        if (name.Contains("Rebuild"))
        {
            if (System.Windows.MessageBox.Show("Are you sure you want to Rebuild?", "Confirm", 
                System.Windows.MessageBoxButton.YesNo) != System.Windows.MessageBoxResult.Yes)
            {
                CancelDefault = true;
            }
        }
    }

    private string GetCommandName(string Guid, int ID)
    {
        if (Guid == null)
            return "null";
        try
        {
            return commands.Item(Guid, ID).Name;
        }
        catch (System.Exception)
        {
        }
        return "";
    }

    private EnvDTE.Events events;
    private EnvDTE.CommandEvents commandEvents;
    private EnvDTE80.Commands2 commands;
}