什么是MyAssembly.XmlSerializers.dll生成?

我正在研究一个生成程序集的项目。 我只注意到正在生成一个额外的程序集* .XmlSerializers.dll。 为什么这个文件是自动生成的,它用于什么?

在.NET实现中,XmlSerializer生成一个用于序列化/反序列化类的临时程序集(出于性能原因)。 它可以在运行中生成(但每次执行都需要时间),也可以在编译期间预生成,并保存在您正在询问的程序集中。

您可以在项目选项(标签编译 – > 高级编译选项 – > 生成序列化程序集自动 ,分别)中更改此行为。 项目文件中的相应元素是GenerateSerializationAssemblies ,例如, <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>

仅供参考。 停止自动生成XmlSerializers.dll的确切步骤是:

  1. 在VS中,右键单击您的项目文件并select“属性”
  2. 点击“Build”标签
  3. 将“生成序列化程序集”下拉列表中的“自动”更改为“关”
  4. 重build,它将会消失

我认为这是出于性能原因的JIT(即时)编译XML serialisers。

RegEx实例使用RegexOptions.Compiled选项打开,您将得到相同的结果。

我不是.NET CLR专家,对于缺乏精确的技术细节感到遗憾。

*.XmlSerializers.dll是使用Sgen.exe [XML序列化程序生成器工具]

请参阅MSDN上的Sgen.exe

通常, Sgen.exe用于项目的后期生成事件。 查看您的项目是否有生成*.XmlSerializers.dll的后期构build事件

该项目只为Web应用程序生成project.XMLSerialisers.dll。 对于其他应用程序,您必须单独运行sgen。