Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在框架中捕获.Net标准异常_C#_.net Core_.net Standard - Fatal编程技术网

C# 在框架中捕获.Net标准异常

C# 在框架中捕获.Net标准异常,c#,.net-core,.net-standard,C#,.net Core,.net Standard,我有一个.net标准库,它抛出netstandard2.0中定义的异常(System.Configuration.ConfigurationErrorsException)。我有一个针对4.7.2框架编译的测试程序集,它调用标准库,并希望捕获异常。一切都很好。在运行时,捕获不会触发,因为它链接到的ConfigurationErrorsException来自4.7.2,而不是标准。注意我从单元测试中得到的错误 如何让框架代码捕获标准异常?注:我不想/不能使测试组件也成为网络标准 消息:测试方法Re

我有一个.net标准库,它抛出netstandard2.0中定义的异常(System.Configuration.ConfigurationErrorsException)。我有一个针对4.7.2框架编译的测试程序集,它调用标准库,并希望捕获异常。一切都很好。在运行时,捕获不会触发,因为它链接到的ConfigurationErrorsException来自4.7.2,而不是标准。注意我从单元测试中得到的错误

如何让框架代码捕获标准异常?注:我不想/不能使测试组件也成为网络标准

消息:测试方法RequiredFieldNotSet引发异常 System.Configuration.ConfigurationErrorsException,但应出现异常System.Configuration.ConfigurationErrorsException。异常消息:System.Configuration.ConfigurationErrorsException:参数'Anit'是必需的,但未设置

如果改用catch(Exception),则会捕获异常。预期框架异常和抛出的net标准异常的完全限定类型是不同的

//framework 
 typeof(System.Configuration.ConfigurationErrorsException).AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

//net standard 
e.GetType().AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration.ConfigurationManager, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"

正如Hans在评论中所说,如果我的框架应用程序链接到标准System.Configuration程序集而不是框架版本,那么我可以捕获此异常。只是我所期望的神奇的重新键入不适用于第三方库(很遗憾)。

我感到困惑,因为我在中没有看到System.Configuration。它也没有在for.NET标准2.0中列出。@Powerlord可能您想要这个@PranavSingh,它来自.NET核心源代码,而不是.NET标准。那么它为什么要编译?反汇编指向system.configuration.configurationmanager\4.5.0\ref\netstandard2.0\system.configuration.configurationmanager.dll
//framework 
 typeof(System.Configuration.ConfigurationErrorsException).AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

//net standard 
e.GetType().AssemblyQualifiedName
"System.Configuration.ConfigurationErrorsException, System.Configuration.ConfigurationManager, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"