生成 MyAssembly. XmlSerializers.dll 的目的是什么?

我工作的项目,生成一个程序集。我刚注意到一个额外的装配。正在生成 XmlSerializers.dll。为什么这个文件是自动生成的,它的用途是什么?

59831 次浏览

出于性能原因,我认为这是 XML 序列化程序的 JIT (恰好及时)编译。

使用打开的 RegexOptions. Compiled 选项对 RegEx 实例也可以得到同样的结果。

我不是.NET CLR 专家,抱歉缺乏精确的技术细节。

*.XmlSerializers.dll是使用 Sgen.exe [ XML Serializer Generator Tool ]生成的

参见 MSDN 上的 Sgen.exe

通常在项目的后期生成事件中使用 Sgen.exe。查看您的项目是否有生成 *.XmlSerializers.dll的后期构建事件

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

您可以在项目选项中改变这种行为(分别为 tab 编译-> 高级编译选项-> 生成序列化程序集自动开始)。项目文件中相应的元素是 GenerateSerializationAssembly,例如 <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>

仅供参考,阻止 XmlSerializers.dll 自动生成的确切步骤如下:

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

该项目只为 web 应用程序生成 project.XMLSerialisers.dll。