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

Hem*_*ant 123 c# xml-serialization visual-studio-2008

我正在开发一个生成装配的项目.我刚刚注意到正在生成一个额外的程序集*.XmlSerializers.dll.为什么这个文件是自动生成的以及它用于什么?

Grz*_*nio 98

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

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

  • 如果在项目设置为自动时生成,这是否意味着需要它?如果您不将X.XMLSerializers.dll与应用程序一起部署会发生什么,它会在运行时生成吗? (20认同)
  • `**生成序列化程序集**指定编译器是否将使用XML Serializer Generator Tool(Sgen.exe)来创建XML序列化程序集.如果您已使用该类序列化代码中的类型,则序列化程序集可以提高XmlSerializer的启动性能.默认情况下,此选项设置为Auto,它指定仅在您使用XmlSerializer将代码中的类型编码为XML时才生成序列化程序集.https://msdn.microsoft.com/en-us/library/kb4wyys2的.aspx (4认同)
  • 那么如何预加载这些组件呢? (2认同)
  • VS2015手动更改:右键单击项目名称 - > _Properties_ - > _Build_ - >(向下滚动)生成序列化程序集. (2认同)

jon*_*snz 54

仅供参考.停止XmlSerializers.dll自动生成的确切步骤是:

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

  • 是的,但问题是**为什么**它是生成的! (17认同)

Ala*_*sen 6

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

使用启用了RegexOptions.Compiled选项的RegEx实例可以获得相同的功能.

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


abh*_*ash 5

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

请参阅MSDN上的Sgen.exe

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