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