在 Visual Studio 异常设置中是否有 enable/disable "Common Language Runtime Exceptions" 的键盘快捷键?
Is there a keyboard shortcut to enable/disable "Common Language Runtime Exceptions" in Visual Studio exception settings?
我发现自己经常启用和禁用异常设置中的 "Common Language Runtime Exceptions" 复选框。我厌倦了每次都必须打开 window。有快捷键吗?
编辑:截至 2020 年 6 月的答案似乎是 "no",我在这里请求了一个功能:https://developercommunity.visualstudio.com/idea/1073035/keyboard-shortcut-to-enabledisable-the-common-runt.html
Is there a keyboard shortcut to enable/disable “Common Language
Runtime Exceptions” in Visual Studio exception settings?
我认为没有这么快捷的捷径。
其实,Exceptionwindow的快捷方式是Ctrl+Alt+E
,你可以这样调用window。
但是,VS只有打开一个快捷键window,并没有启用或禁用异常的快捷键,而且有很多不同异常中的异常类型 window。所以可能有点难。
所以你应该使用快捷方式Ctrl+Alt+E
打开异常然后手动设置异常。
除此之外,如果您仍然希望该功能具有 enable/disable 公共语言运行时异常 的键盘快捷键,您可以在我们的 User Voice Forum.
上建议此功能
之后,您可以在这里与我们分享link,任何对这个功能感兴趣的人都会投票给它,这样它会得到更多的关注微软.
它由 VSDebugCoreUI.dll 中的 DebuggerServiceHelper class 管理:
ExceptionSettingsBatchOperation{_operationDepth=3} DebuggerServiceHelper.BeginExceptionBatchOperation()
DebuggerServiceHelper.UpdateException(EXCEPTION_INFO150{bstrProgramName=null, bstrExceptionName="Common Language Runtime Exceptions", dwCode=0, dwState=16418})
ExceptionSettingsBatchOperation.EndBatchOperation()
但是这些都是内部的 classes 并且不容易从外部代码访问。
另一种方法是在屏幕上找到此 WPF CheckBox(通过带有给定文本 属性 的 TextBlock)并以编程方式单击它。
我真的希望 Exception Breaker 能为 Visual Studio 的更高版本工作。
结合这个 answer 到一个类似的问题,我能够得到一些工作。这并不理想,但您可以尝试一下。
注:我用的是Visual Studio2019
需要工具
- Visual Commander 扩展的免费版本,允许在更高版本中使用 Visual Studio 宏。
注意:我尝试(稍微)使用 Macros for Visual Studio 扩展,但没有成功
步骤
- 使用 Visual Commander,使用以下代码添加一个新命令,保存并编译。
- 运行 具有以下之一:
- 运行 直接来自 Visual Commander UI
- 修改工具栏并向其添加Extensions/Command01命令
- 通过选项和 select VCmd.Command01
添加键盘快捷键
代码
备注:
- 我尝试切换
<All Common Language Runtime Exceptions not in this list>
项目,但没有成功。
- 我尝试遍历组中的所有异常,但它真的很慢(即 15 秒 :-( ) 所以我为我的项目选择了最重要的异常。
- 我没有成功找到一个切换父级的方法
Common Language Runtime Exceptions
,但是如果你找到了,请发表评论。
using EnvDTE;
using EnvDTE80; // DTE2 type
using EnvDTE90; // Debugger3
public class M : VisualCommanderExt.ICommand
{
public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
{
var lDebugger = DTE.Debugger as Debugger3;
var lExceptionSettings = lDebugger.ExceptionGroups.Item("Common Language Runtime Exceptions");
// Use this Exception as the master toggle
bool lExceptionsEnabledToSet = !lExceptionSettings.Item("System.ArgumentException").BreakWhenThrown;
// 2 examples
lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSettings.Item("System.ArgumentException"));
lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSettings.Item("System.OutOfMemoryException"));
// This does not work to set the whole group on/off:
//lExceptionSettings.SetBreakWhenThrown(true, lExceptionSettings.Item("<All Common Language Runtime Exceptions not in this list>"));
// This is really slow
//foreach (var lExceptionSetting in lExceptionSettings)
//{
// lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSetting as ExceptionSetting);
//}
}
}
我发现自己经常启用和禁用异常设置中的 "Common Language Runtime Exceptions" 复选框。我厌倦了每次都必须打开 window。有快捷键吗?
编辑:截至 2020 年 6 月的答案似乎是 "no",我在这里请求了一个功能:https://developercommunity.visualstudio.com/idea/1073035/keyboard-shortcut-to-enabledisable-the-common-runt.html
Is there a keyboard shortcut to enable/disable “Common Language Runtime Exceptions” in Visual Studio exception settings?
我认为没有这么快捷的捷径。
其实,Exceptionwindow的快捷方式是Ctrl+Alt+E
,你可以这样调用window。
但是,VS只有打开一个快捷键window,并没有启用或禁用异常的快捷键,而且有很多不同异常中的异常类型 window。所以可能有点难。
所以你应该使用快捷方式Ctrl+Alt+E
打开异常然后手动设置异常。
除此之外,如果您仍然希望该功能具有 enable/disable 公共语言运行时异常 的键盘快捷键,您可以在我们的 User Voice Forum.
上建议此功能之后,您可以在这里与我们分享link,任何对这个功能感兴趣的人都会投票给它,这样它会得到更多的关注微软.
它由 VSDebugCoreUI.dll 中的 DebuggerServiceHelper class 管理:
ExceptionSettingsBatchOperation{_operationDepth=3} DebuggerServiceHelper.BeginExceptionBatchOperation()
DebuggerServiceHelper.UpdateException(EXCEPTION_INFO150{bstrProgramName=null, bstrExceptionName="Common Language Runtime Exceptions", dwCode=0, dwState=16418})
ExceptionSettingsBatchOperation.EndBatchOperation()
但是这些都是内部的 classes 并且不容易从外部代码访问。
另一种方法是在屏幕上找到此 WPF CheckBox(通过带有给定文本 属性 的 TextBlock)并以编程方式单击它。
我真的希望 Exception Breaker 能为 Visual Studio 的更高版本工作。
结合这个 answer 到一个类似的问题,我能够得到一些工作。这并不理想,但您可以尝试一下。
注:我用的是Visual Studio2019
需要工具
- Visual Commander 扩展的免费版本,允许在更高版本中使用 Visual Studio 宏。
注意:我尝试(稍微)使用 Macros for Visual Studio 扩展,但没有成功
步骤
- 使用 Visual Commander,使用以下代码添加一个新命令,保存并编译。
- 运行 具有以下之一:
- 运行 直接来自 Visual Commander UI
- 修改工具栏并向其添加Extensions/Command01命令
- 通过选项和 select VCmd.Command01 添加键盘快捷键
代码
备注:
- 我尝试切换
<All Common Language Runtime Exceptions not in this list>
项目,但没有成功。 - 我尝试遍历组中的所有异常,但它真的很慢(即 15 秒 :-( ) 所以我为我的项目选择了最重要的异常。
- 我没有成功找到一个切换父级的方法
Common Language Runtime Exceptions
,但是如果你找到了,请发表评论。
using EnvDTE;
using EnvDTE80; // DTE2 type
using EnvDTE90; // Debugger3
public class M : VisualCommanderExt.ICommand
{
public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
{
var lDebugger = DTE.Debugger as Debugger3;
var lExceptionSettings = lDebugger.ExceptionGroups.Item("Common Language Runtime Exceptions");
// Use this Exception as the master toggle
bool lExceptionsEnabledToSet = !lExceptionSettings.Item("System.ArgumentException").BreakWhenThrown;
// 2 examples
lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSettings.Item("System.ArgumentException"));
lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSettings.Item("System.OutOfMemoryException"));
// This does not work to set the whole group on/off:
//lExceptionSettings.SetBreakWhenThrown(true, lExceptionSettings.Item("<All Common Language Runtime Exceptions not in this list>"));
// This is really slow
//foreach (var lExceptionSetting in lExceptionSettings)
//{
// lExceptionSettings.SetBreakWhenThrown(lExceptionsEnabledToSet, lExceptionSetting as ExceptionSetting);
//}
}
}