我工作的项目,生成一个程序集。我刚注意到一个额外的装配。正在生成 XmlSerializers.dll。为什么这个文件是自动生成的,它的用途是什么?
出于性能原因,我认为这是 XML 序列化程序的 JIT (恰好及时)编译。
使用打开的 RegexOptions. Compiled 选项对 RegEx 实例也可以得到同样的结果。
我不是.NET CLR 专家,抱歉缺乏精确的技术细节。
*.XmlSerializers.dll是使用 Sgen.exe [ XML Serializer Generator Tool ]生成的
*.XmlSerializers.dll
参见 MSDN 上的 Sgen.exe
通常在项目的后期生成事件中使用 Sgen.exe。查看您的项目是否有生成 *.XmlSerializers.dll的后期构建事件
Sgen.exe
在 .NET实现中,XmlSerializer 生成用于序列化/反序列化类的临时程序集(出于性能原因)。它可以动态生成(但是每次执行都需要时间) ,也可以在编译期间预生成并保存在您要求的这个程序集中。
您可以在项目选项中改变这种行为(分别为 tab 编译-> 高级编译选项-> 生成序列化程序集、 自动或 开始)。项目文件中相应的元素是 GenerateSerializationAssembly,例如 <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>。
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
仅供参考,阻止 XmlSerializers.dll 自动生成的确切步骤如下:
该项目只为 web 应用程序生成 project.XMLSerialisers.dll。