Sto lavorando a un progetto che genera un assembly. Ho appena notato che viene generato un assembly aggiuntivo * .XmlSerializers.dll. Perché questo file viene generato automaticamente e per cosa viene utilizzato?
Sto lavorando a un progetto che genera un assembly. Ho appena notato che viene generato un assembly aggiuntivo * .XmlSerializers.dll. Perché questo file viene generato automaticamente e per cosa viene utilizzato?
Risposte:
Nell'implementazione di .NET , XmlSerializer genera un assembly temporaneo per serializzare / deserializzare le classi (per motivi di prestazioni). Può essere generato al volo (ma richiede tempo per ogni esecuzione) oppure può essere rigenerato durante la compilazione e salvato in questo assembly di cui si sta chiedendo.
È possibile modificare questo comportamento nelle opzioni del progetto (scheda Compila -> Opzioni di compilazione avanzate -> Genera assiemi di serializzazione , Auto o Attivo , rispettivamente). L'elemento corrispondente nel file di progetto è GenerateSerializationAssemblies , ad esempio <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
.
Auto
, ma solo uno ha creato una DLL di serializzazione.
**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. I passaggi esatti per interrompere la generazione automatica di XmlSerializers.dll sono:
Penso che questa sia la raccolta JIT (Just in time) di serializzatori XML per motivi di prestazioni.
La stessa cosa si ottiene con le istanze RegEx utilizzando l'opzione RegexOptions.Compiled attivata.
Non sono un esperto di CLR .NET, mi dispiace per la mancanza di dettagli tecnici precisi.
*.XmlSerializers.dll
vengono generati utilizzando Sgen.exe [XML Serializer Generator Tool]
Vedi Sgen.exe su MSDN
In genere Sgen.exe
viene utilizzato negli eventi Post Build dei progetti. Verifica se il tuo progetto ha un evento post build che genera il*.XmlSerializers.dll