Ich arbeite an einem Projekt, das eine Baugruppe generiert. Ich habe gerade festgestellt, dass eine zusätzliche Assembly * .XmlSerializers.dll generiert wird. Warum wird diese Datei automatisch generiert und wofür wird sie verwendet?Wofür wird MyAssembly.XmlSerializers.dll generiert?
Antwort
-Implementierung generiert. Der XmlSerializer generiert eine temporäre Assembly für das Serialisieren/Deserialisieren Ihrer Klassen (aus Leistungsgründen). Es kann entweder im Handumdrehen erzeugt werden (aber es dauert bei jeder Ausführung Zeit) oder es kann während der Kompilierung vorgeneriert und in dieser Assembly gespeichert werden, nach der Sie fragen.
Sie können dieses Verhalten in Projektoptionen ändern (Tab Compile ->Erweiterte Kompilierungsoptionen ->Serialisierung generieren Baugruppen, Auto oder Auf, respectively). Das entsprechende Element in der Projektdatei ist GenerateSerializationAssemblies, zum Beispiel <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
.
Wenn es generiert wird, wenn die Projekteinstellung Auto ist, bedeutet das, dass es benötigt wird? Was passiert, wenn Sie die X.XMLSerializers.dll nicht mit der Anwendung bereitstellen, wird sie im laufenden Betrieb generiert? – Rory
Wie kann man diese Baugruppen vorladen? – Carlo
@Rory, ich weiß, diese Frage ist alt, aber das scheint der Fall zu sein. Drei meiner Projekte wurden auf "Auto" gesetzt, aber nur einer erstellte eine Serialisierungs-DLL. – ps2goat
Ich denke, dies ist die Just-in-Time-Kompilierung von XML-Serialisierern aus Leistungsgründen.
Sie erhalten dasselbe mit RegEx-Instanzen, wenn die RegexOptions.Compiled-Option aktiviert ist.
Ich bin kein .NET CLR-Experte, Entschuldigung für Mangel an präzisen technischen Details.
*.XmlSerializers.dll
erzeugt, um den Sgen.exe [XML Serializer Generator Tool] mit
Siehe Sgen.exe on MSDN
Typischerweise beträgt die Sgen.exe
in Post verwendet wird, Ereignisse von Projekten erstellen. Überprüfen Sie, ob Ihr Projekt über ein Post-Build-Ereignis verfügt, das die *.XmlSerializers.dll
FYI. Die genauen Schritte von der XmlSerializers.dll stoppen wird automatisch generiert werden:
- In VS rechten Maustaste auf die Projektdatei, und wählen Sie „Eigenschaften“
- Klicken Sie auf die „Build“ Registerkarte
- Ändern Sie den „Gene Serialisierungsassembly“ Drop-Down von „Auto“ auf „aus“
- neu erstellen und es wird
Ja, aber die Frage war ** warum ** es generiert wird! – Hemant
Ich weiß, dies ist eine alte Antwort, aber in VS2015 Update 3 auf eine Winforms App Targeting .NET 2.0 x86 wenn kompiliert auf einem Win10 Ent 64bit System dann auch die Einstellung "Serialization Assembly erstellen" Drop-down auf "Off" dann die * .XmlSerializers .dll wird noch generiert. Meine App verweist auf einen ASMX-Webdienst. Vielleicht ein Fehler in VS2015 Update 3? – Peter
Das Projekt nur die project.XMLSerialisers.dll erzeugt für Web-Anwendungen verschwunden sein. Für andere Anwendungen müssen Sie sgen separat ausführen.
Meine WinForms App generiert MyProject.XMLSerializers.dll, wenn Sie es aktivieren oder automatisch –
Ich denke, Sie wissen bereits, warum es generiert wird. Wenn nicht, wird es generiert, weil Ihr Projekt eine Art Webservice darstellt. Es wird immer entweder während der Kompilierzeit oder während der Laufzeit generiert. zur Laufzeit wird es im Temp-Ordner mit einem zufälligen Namen generiert – AaA