Pracuję nad projektem, który generuje montaż. Właśnie zauważyłem, że generowany jest dodatkowy zestaw * .XmlSerializers.dll. Dlaczego ten plik jest generowany automatycznie i do czego służy?
124
Pracuję nad projektem, który generuje montaż. Właśnie zauważyłem, że generowany jest dodatkowy zestaw * .XmlSerializers.dll. Dlaczego ten plik jest generowany automatycznie i do czego służy?
Odpowiedzi:
W implementacji .NET XmlSerializer generuje tymczasowy zestaw do serializacji / deserializacji klas (ze względu na wydajność). Można go wygenerować w locie (ale przy każdym wykonaniu zajmuje to trochę czasu) lub można go wstępnie wygenerować podczas kompilacji i zapisać w tym zestawie, o który pytasz.
Możesz zmienić to zachowanie w opcjach projektu (zakładka Kompiluj -> Zaawansowane opcje kompilacji -> Generuj zestawy serializacji , odpowiednio Auto lub Włącz ). Odpowiedni element w pliku projektu to GenerateSerializationAssemblies , na przykład
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
.źródło
Auto
, ale tylko jeden utworzył bibliotekę DLL serializacji.**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. Dokładne kroki, aby zatrzymać automatyczne generowanie XmlSerializers.dll, są następujące:
źródło
Myślę, że jest to kompilacja JIT (Just in time) programów serializatorów XML ze względu na wydajność.
To samo dzieje się z instancjami RegEx przy włączonej opcji RegexOptions.Compiled.
Nie jestem ekspertem .NET CLR, przepraszam za brak precyzyjnych szczegółów technicznych.
źródło
*.XmlSerializers.dll
są generowane za pomocą Sgen.exe [XML Serializer Generator Tool]Zobacz Sgen.exe w witrynie MSDN
Zwykle
Sgen.exe
jest używany w wydarzeniach po kompilacji projektów. Sprawdź, czy Twój projekt ma zdarzenie po kompilacji, które generuje plik*.XmlSerializers.dll
źródło
Projekt generuje tylko plik project.XMLSerialisers.dll dla aplikacji internetowych. W przypadku innych aplikacji musisz osobno uruchomić sgen.
źródło