Я работаю над проектом, который генерирует сборку. Я только что заметил, что создается дополнительная сборка * .XmlSerializers.dll. Почему этот файл создается автоматически и для чего он используется?
124
Я работаю над проектом, который генерирует сборку. Я только что заметил, что создается дополнительная сборка * .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.aspxFYI. Вот точные шаги, чтобы остановить автоматическое создание XmlSerializers.dll:
источник
Я думаю, что это JIT-компиляция сериализаторов XML по соображениям производительности.
То же самое и с экземплярами RegEx, если включена опция RegexOptions.Compiled.
Я не эксперт по .NET CLR, извините за отсутствие точных технических деталей.
источник
*.XmlSerializers.dll
генерируются с помощью Sgen.exe [средство создания сериализатора XML]См. Sgen.exe в MSDN
Обычно
Sgen.exe
используется в событиях Post Build проектов. Посмотрите, есть ли в вашем проекте событие пост-сборки, которое генерирует*.XmlSerializers.dll
источник
Проект создает только файл project.XMLSerialisers.dll для веб-приложений. Для других приложений вам нужно запустить sgen отдельно.
источник