Я працюю над проектом, який створює збірку. Щойно я помітив, що створюється додаткова збірка * .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
Проект генерує лише проект.XMLSerialisers.dll для веб-додатків. Для інших програм вам потрібно запустити sgen окремо.