2013-02-19 46 views
15

在重建之前有什么办法让Visual Studio 2010提示,或者其他任何方式来避免碰到“重建”而不是“构建”?重建之前Visual Studio 2010可以提示吗?

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

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

+0

我刚打F7时,我想建立。当然,它确实构建了整个解决方案,但这正是你想要的。另一种方法是设置项目构建的快捷方式,这样可以避免基于鼠标的混淆。 – 2013-02-19 17:32:34

+0

是的,我想我必须养成使用F7构建整个解决方案的习惯。尽管我经常在我的情况下构建单个项目。 – pauld 2013-02-19 21:42:16

回答

27

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

从2010年VS,

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

尽管我们以同样的方式回答,但我赞成你的,因为这是你的第一个答案。让他们继续来! :) – 2013-02-19 17:52:00

+0

你确定你没有注册,因为他比你高吗? ;) – 2013-02-19 19:17:21

+0

谢谢你们这个工作非常好。 – pauld 2013-02-19 21:40:24

9

据我所知,没有办法启用执行项目或解决方案重建的确认。

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

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

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

2

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

移动(删除然后添加)真正的重建命令到这个新的菜单。如果你喜欢,重新命名为“确定”。

0

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

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命令。

相关问题