Ich arbeite an einem Projekt, das eine Baugruppe generiert. Ich habe gerade bemerkt, dass eine zusätzliche Assembly * .XmlSerializers.dll generiert wird. Warum wird diese Datei automatisch generiert und wofür wird sie verwendet?
Ich arbeite an einem Projekt, das eine Baugruppe generiert. Ich habe gerade bemerkt, dass eine zusätzliche Assembly * .XmlSerializers.dll generiert wird. Warum wird diese Datei automatisch generiert und wofür wird sie verwendet?
Antworten:
In der .NET- Implementierung generiert der XmlSerializer eine temporäre Assembly zum Serialisieren / Deserialisieren Ihrer Klassen (aus Leistungsgründen). Es kann entweder im laufenden Betrieb generiert werden (es dauert jedoch bei jeder Ausführung einige Zeit) oder es kann während der Kompilierung vorgeneriert und in der von Ihnen gewünschten Assembly gespeichert werden.
Sie können dieses Verhalten in den Projektoptionen ändern (Registerkarte Kompilieren -> Erweiterte Kompilierungsoptionen -> Serialisierungsassemblys generieren , Auto bzw. Ein ). Das entsprechende Element in der Projektdatei ist GenerateSerializationAssemblies zum Beispiel <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
.
Auto
, aber nur eines hat eine Serialisierungs-DLL erstellt.
**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
Zu Ihrer Information. Die genauen Schritte, um zu verhindern, dass die XmlSerializers.dll automatisch generiert wird, sind:
Ich denke, dies ist die JIT-Kompilierung (Just in Time) von XML-Serialisierern aus Leistungsgründen.
Dasselbe erhalten Sie mit RegEx-Instanzen, wenn die Option RegexOptions.Compiled aktiviert ist.
Ich bin kein .NET CLR-Experte, entschuldige den Mangel an genauen technischen Details.
*.XmlSerializers.dll
werden mit dem Sgen.exe [XML Serializer Generator Tool] generiert
Siehe Sgen.exe auf MSDN
In der Regel Sgen.exe
wird das in Post-Build-Ereignissen von Projekten verwendet. Überprüfen Sie, ob Ihr Projekt ein Post-Build-Ereignis hat, das das generiert*.XmlSerializers.dll
Das Projekt generiert nur die Datei project.XMLSerialisers.dll für Webanwendungen. Für andere Anwendungen müssen Sie sgen separat ausführen.