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

时间:2009-06-01 11:18:46

标签: c# visual-studio-2008 xml-serialization

我正在开发一个生成装配的项目。我刚刚注意到正在生成一个额外的程序集* .XmlSerializers.dll。为什么要自动生成此文件及其用途?

5 个答案:

答案 0 :(得分:95)

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

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

答案 1 :(得分:54)

FYI。停止XmlSerializers.dll自动生成的确切步骤是:

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

答案 2 :(得分:6)

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

使用启用了RegexOptions.Compiled选项的RegEx实例可以获得相同的效果。

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

答案 3 :(得分:5)

使用Sgen.exe [XML Serializer Generator Tool]

生成

*.XmlSerializers.dll

请参阅Sgen.exe on MSDN

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

的帖子构建事件

答案 4 :(得分:4)

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