Visual Studio在重建之前可以提示吗?

时间:2013-02-19 17:23:59

标签: c++ visual-studio

在重建之前有什么方法可以让Visual Studio提示,或者是否有任何其他方法可以让它更容易避免命中“Rebuild”而不是“Build”?

当我右键点击一个项目并在意外点击“Build”时选择“Rebuild”时,我浪费了无数个小时。

这适用于本机C ++解决方案。

4 个答案:

答案 0 :(得分:33)

Visual Studio 2010允许自定义菜单。您可以从“项目”上下文菜单中删除“重建”项。或者您可能只想将“重建”命令从“构建”命令移开,这样您就不会意外地碰到错误的项目。

来自VS 2010,

  • 选择工具菜单
  • 选择自定义...
  • 选择“命令”选项卡
  • 选择“上下文菜单”单选按钮,然后选择“项目和 解决方案上下文菜单|项目“
  • 选择“重建”并移动或移除它。

答案 1 :(得分:9)

据我所知,无法为执行项目或解决方案重建启用确认。

您最好的选择是移动或删除上下文菜单中的“重建”菜单项。

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

答案 2 :(得分:3)

添加一个名为“Rebuild”的新子菜单

将真实的Rebuild命令移动(删除然后添加)到这个新菜单。如果你愿意,可以将它改名为“Sure”。

答案 3 :(得分:0)

您可以为我的Visual Commander工具使用以下C#扩展程序:

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;
}

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