有可能防止这种第一次机会异常吗?

本文关键字:机会 异常 第一次 有可能 | 更新日期: 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中。这一切都发生在后台,除非提供程序集,否则无法阻止第一个更改异常。这样做的好处是:不必动态地生成序列化程序集,从而提高了一点性能。