【问题标题】:Can Visual Studio prompt before rebuilding?Visual Studio 可以在重建前提示吗?
【发布时间】:2013-02-19 17:23:58
【问题描述】:

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

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

这是针对原生 C++ 解决方案的。

【问题讨论】:

  • 当我想构建时,我只是按 F7。当然,它确实构建了整个解决方案,但这通常是您想要的。另一种方法是为项目构建设置快捷方式,这样您就可以避免任何基于鼠标的混淆。
  • 是的,我想我必须养成使用 F7 构建整个解决方案的习惯。尽管我确实经常构建单个项目。

标签: c++ visual-studio


【解决方案1】:

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

从 VS 2010 开始,

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

【讨论】:

  • 虽然我们的回答方式相同,但我赞成您的回答,因为这是您的第一个回答。让他们继续来! :)
  • 你确定你投票不是因为他比你高吗? ;)
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      您可以为我的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。

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 2012-03-19
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多