Saya sedang mengerjakan proyek yang menghasilkan perakitan. Saya baru saja melihat bahwa assembly tambahan * .XmlSerializers.dll sedang dibuat. Mengapa file ini dibuat otomatis dan digunakan untuk apa?
124
Saya sedang mengerjakan proyek yang menghasilkan perakitan. Saya baru saja melihat bahwa assembly tambahan * .XmlSerializers.dll sedang dibuat. Mengapa file ini dibuat otomatis dan digunakan untuk apa?
Jawaban:
Dalam implementasi .NET , XmlSerializer menghasilkan rakitan sementara untuk membuat serial / deserialisasi kelas Anda (untuk alasan kinerja). Ini dapat dibuat dengan cepat (tetapi membutuhkan waktu pada setiap eksekusi), atau dapat dibuat sebelumnya selama kompilasi dan disimpan dalam rakitan yang Anda tanyakan ini.
Anda dapat mengubah perilaku ini dalam opsi proyek (tab Compile -> Advanced Compile Options -> Generate serialization assemblies , Auto atau On , masing-masing). Elemen terkait dalam file proyek adalah GenerateSerializationAssemblies , misalnya
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
,.sumber
Auto
, tetapi hanya satu yang membuat DLL serialisasi.**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. Langkah-langkah yang tepat untuk menghentikan XmlSerializers.dll agar tidak dibuat secara otomatis adalah:
sumber
Saya pikir ini adalah kompilasi JIT (Just in time) dari serialisers XML untuk alasan kinerja.
Anda mendapatkan hal yang sama dengan instance RegEx menggunakan opsi RegexOptions.Compiled yang diaktifkan.
Saya bukan ahli .NET CLR, maaf karena kurangnya detail teknis yang tepat.
sumber
*.XmlSerializers.dll
dibuat menggunakan Sgen.exe [XML Serializer Generator Tool]Lihat Sgen.exe di MSDN
Biasanya
Sgen.exe
digunakan dalam acara Post Build Projects. Lihat apakah proyek Anda memiliki event post build yang menghasilkan*.XmlSerializers.dll
sumber
Proyek ini hanya menghasilkan project.XMLSerialisers.dll untuk aplikasi web. Untuk aplikasi lain Anda harus menjalankan sgen secara terpisah.
sumber