有可能防止这种第一次机会异常吗?
本文关键字:机会 异常 第一次 有可能 | 更新日期: 2023-09-27 18:08:02
这是产生问题的代码(在调试时使用停止CLR异常的选项):
private static XmlSerializer _serializer = new XmlSerializer(typeof(Model.Print.PrinterInfo));
这是个例外
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
Additional information: Could not load file or assembly 'Model.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
这很烦人,因为为了调试目的,我经常需要在CLR异常上启用stop,但我不喜欢在这个特定的情况下被停止…
是的,但是我想你不会喜欢的。
您可以使用sgen
来生成Model.XmlSerializers
程序集,它可以包含在您的项目中。这将解决异常。
.NET实际上是这样做的:
- 创建
XmlSerializer
; - 检查是否有特定程序集的序列化程序(您的异常);
- 如果没有,立即生成一个;
- 加载程序集,生成的程序集或现有程序集;
- 使用序列化程序集对XML进行序列化和反序列化。
您可以看到问题在步骤2中。这一切都发生在后台,除非提供程序集,否则无法阻止第一个更改异常。这样做的好处是:不必动态地生成序列化程序集,从而提高了一点性能。