什么是MyAssembly.XmlSerializers.dll生成?
我正在研究一个生成程序集的项目。 我只注意到正在生成一个额外的程序集* .XmlSerializers.dll。 为什么这个文件是自动生成的,它用于什么?
在.NET实现中,XmlSerializer生成一个用于序列化/反序列化类的临时程序集(出于性能原因)。 它可以在运行中生成(但每次执行都需要时间),也可以在编译期间预生成,并保存在您正在询问的程序集中。
您可以在项目选项(标签编译 – > 高级编译选项 – > 生成序列化程序集 , 自动或开 ,分别)中更改此行为。 项目文件中的相应元素是GenerateSerializationAssemblies ,例如, <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
。
仅供参考。 停止自动生成XmlSerializers.dll的确切步骤是:
- 在VS中,右键单击您的项目文件并select“属性”
- 点击“Build”标签
- 将“生成序列化程序集”下拉列表中的“自动”更改为“关”
- 重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。