26

在重建之前有什么方法可以让 Visual Studio 提示,或者有什么其他方法可以更容易地避免点击“重建”而不是“构建”?

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

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

4

4 回答 4

41

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

从 VS 2010 开始,

  • 选择工具菜单
  • 选择自定义...
  • 选择命令选项卡
  • 选择“上下文菜单”单选按钮并选择“项目和解决方案上下文菜单|项目”
  • 选择“重建”并将其移动或删除。
于 2013-02-19T17:50:16.103 回答
9

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

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

  1. 右键单击VS中的菜单/工具栏区域并选择“自定义...”
  2. 单击“命令”选项卡。
  3. 选择“上下文菜单”单选按钮。
  4. 在下拉列表中找到“项目和解决方案上下文菜单|项目”。
  5. 单击上下文菜单表示中的“重建”菜单项并执行所需的操作(删除、向上或向下移动、开始新组等)。

要将菜单重置为默认状态,请单击“全部重置”按钮。

于 2013-02-19T17:47:12.740 回答
3

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

将真正的重建命令移动(删除然后添加)到这个新菜单。如果您愿意,可以将其重命名为“确定”。

于 2015-08-23T10:26:36.217 回答
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。

于 2016-10-21T03:51:28.457 回答