Я работаю над проектом, который генерирует сборку. Я только что заметил, что создается дополнительная сборка * .XmlSerializers.dll. Почему этот файл создается автоматически и для чего он используется?
Я работаю над проектом, который генерирует сборку. Я только что заметил, что создается дополнительная сборка * .XmlSerializers.dll. Почему этот файл создается автоматически и для чего он используется?
Ответы:
В реализации .NET XmlSerializer создает временную сборку для сериализации / десериализации ваших классов (по соображениям производительности). Его можно либо сгенерировать «на лету» (но на каждое выполнение требуется время), либо предварительно сгенерировать во время компиляции и сохранить в этой сборке, о которой вы спрашиваете.
Вы можете изменить это поведение в параметрах проекта (вкладка « Компиляция» -> « Дополнительные параметры компиляции» -> « Создавать сборки сериализации» , « Авто» или « Вкл.» Соответственно). Соответствующим элементом в файле проекта является GenerateSerializationAssemblies , например <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
.
Auto
, но только один создал DLL сериализации.
**Generate Serialization Assemblies** Specifies whether the compiler will use the XML Serializer Generator Tool (Sgen.exe) to create XML serialization assemblies. Serialization assemblies can improve the startup performance of XmlSerializer if you have used that class to serialize types in your code. By default, this option is set to Auto, which specifies that serialization assemblies be generated only if you have used XmlSerializer to encode types in your code to XML.
msdn.microsoft.com/en-us/library/kb4wyys2.aspx
FYI. Вот точные шаги, чтобы остановить автоматическое создание XmlSerializers.dll:
Я думаю, что это JIT-компиляция сериализаторов XML по соображениям производительности.
То же самое и с экземплярами RegEx, если включена опция RegexOptions.Compiled.
Я не эксперт по .NET CLR, извините за отсутствие точных технических деталей.
*.XmlSerializers.dll
генерируются с помощью Sgen.exe [средство создания сериализатора XML]
См. Sgen.exe в MSDN
Обычно Sgen.exe
используется в событиях Post Build проектов. Посмотрите, есть ли в вашем проекте событие пост-сборки, которое генерирует*.XmlSerializers.dll