我正在开发一个生成装配的项目。我刚刚注意到正在生成一个额外的程序集* .XmlSerializers.dll。为什么要自动生成此文件及其用途?
答案 0 :(得分:95)
在.NET实现中,XmlSerializer生成一个临时程序集,用于序列化/反序列化类(出于性能原因)。它既可以在运行中生成(但每次执行都需要时间),或者可以在编译期间预生成并保存在您要求的此程序集中。
您可以在项目选项中更改此行为(选项卡编译 - &gt; 高级编译选项 - &gt; 生成序列化程序集,分别自动或开启)。项目文件中的相应元素是 GenerateSerializationAssemblies ,例如<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
。
答案 1 :(得分:54)
FYI。停止XmlSerializers.dll自动生成的确切步骤是:
答案 2 :(得分:6)
我认为这是出于性能原因的XML序列化程序的JIT(及时)编译。
使用启用了RegexOptions.Compiled选项的RegEx实例可以获得相同的效果。
我不是.NET CLR专家,抱歉缺乏精确的技术细节。
答案 3 :(得分:5)
*.XmlSerializers.dll
通常,Sgen.exe
用于项目的Post Build事件。查看您的项目是否有生成*.XmlSerializers.dll
答案 4 :(得分:4)
该项目仅为Web应用程序生成project.XMLSerialisers.dll。对于其他应用程序,您必须单独运行sgen。