मैं एक प्रोजेक्ट पर काम कर रहा हूं, जो एक असेंबली बनाता है। मैंने अभी देखा कि एक अतिरिक्त असेंबली * .XmlSerializers.dll उत्पन्न किया जा रहा है। यह फ़ाइल ऑटो जनरेट क्यों की जाती है और इसका उपयोग किस लिए किया जाता है?
मैं एक प्रोजेक्ट पर काम कर रहा हूं, जो एक असेंबली बनाता है। मैंने अभी देखा कि एक अतिरिक्त असेंबली * .XmlSerializers.dll उत्पन्न किया जा रहा है। यह फ़ाइल ऑटो जनरेट क्यों की जाती है और इसका उपयोग किस लिए किया जाता है?
जवाबों:
में नेट कार्यान्वयन, XmlSerializer एक अस्थायी विधानसभा serializing के लिए / (प्रदर्शन के कारणों के लिए) अपनी कक्षाओं deserializing उत्पन्न करता है। यह या तो मक्खी पर उत्पन्न हो सकता है (लेकिन हर निष्पादन में समय लगता है), या यह संकलन के दौरान पूर्वगामी हो सकता है और इस विधानसभा में बचाया जा सकता है जिसके बारे में आप पूछ रहे हैं।
आप इस व्यवहार को प्रोजेक्ट विकल्पों (टैब कंपाइल -> एडवांस कंपाइल ऑप्शंस -> क्रमबद्ध असेंबली , ऑटो या ऑन , क्रमशः) में बदल सकते हैं। प्रोजेक्ट फ़ाइल में संबंधित तत्व GenerateSerializationAssemblies है , उदाहरण के लिए <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
,।
Auto
, लेकिन केवल एक ने क्रमबद्ध DLL बनाया।
**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 करें। XmlSerializers.dll को ऑटो-जनरेट होने से रोकने के सटीक उपाय हैं:
मुझे लगता है कि यह प्रदर्शन कारणों के लिए XML धारावाहिकों के JIT (बस समय में) संकलन है।
आप Regge इंस्टेंसेस के साथ RegexOptions.Compiled विकल्प को चालू करके उसी चीज़ को प्राप्त करते हैं।
मैं कोई .NET सीएलआर विशेषज्ञ नहीं हूं, सटीक तकनीकी विवरण की कमी के लिए खेद है।
*.XmlSerializers.dll
Sgen.exe [XML Serializer जेनरेटर टूल] का उपयोग करके उत्पन्न किया जाता है
MSDN पर Sgen.exe देखें
आमतौर पर Sgen.exe
प्रोजेक्ट के पोस्ट बिल्ड ईवेंट में इसका उपयोग किया जाता है। देखें कि क्या आपके प्रोजेक्ट में पोस्ट बिल्ड ईवेंट है जो इसे जेनरेट करता है*.XmlSerializers.dll
परियोजना केवल वेब अनुप्रयोगों के लिए project.XMLSerialisers.dll उत्पन्न करती है। अन्य एप्लिकेशन के लिए आपको अलग से sgen चलाना होगा।