我正在 .Net 8.0 中开发一个 C# WPF 项目,由于某种原因,我可以访问所有系统程序集的完整源代码。在大多数 PC 上,比如我的工作计算机,查看像
Console
这样的类的定义只能显示公共方法和 xml 注释,而我的家用 PC 可以访问完整的源代码,包括私有方法的内容(就像我可以看到 private static void HandlePosixSignal
内Console
方法背后的代码)。
我认为这就是每当我遇到异常时,它都不会抛出到我自己的代码中,而是抛出到一些系统类中的原因。为了演示我的意思,我复制了 MSDN 异常页面的示例:
string something = "aa";
string.Format("{1}", something);
通常这会在
string.Format
调用中引发异常,就像您在 Microsoft 的屏幕截图中看到的那样:
就我而言 - 我认为这是由于可以访问完整的源代码 - 错误是在
System.Windows.Markup.XamlReader
处的 internal static void RewrapException
中引发的,正如您在这里看到的:
我不知道如何访问反编译的源代码,也不知道它是否是默认的 .Net 8 功能,但这对于调试来说非常烦人,我想禁用它。有什么想法可以禁用它吗?
这是由于 Visual Studio 中的调试选项
Just my code
所致,您需要检查该选项。
启用后,这会指示 Visual Studio 在调试时仅加载您创建的程序集,而不加载
System.*
或任何其他外部程序集。
要启用它,您可以使用功能搜索(快捷方式
Ctrl + Q
)并搜索Just my code
,您应该会看到一个必须选中的复选框。然后重新启动调试过程,您应该会看到异常在您期望的地方抛出。