2009-06-01 19 views
109

मैं एक परियोजना पर काम कर रहा हूं जो एक असेंबली उत्पन्न करता है। मैंने अभी देखा है कि एक अतिरिक्त असेंबली * .XmlSerializers.dll उत्पन्न किया जा रहा है। यह फ़ाइल ऑटो जनरेट क्यों है और इसका उपयोग किस लिए किया जाता है?MyAssembly.XmlSerializers.dll के लिए जेनरेट किया गया है?

+0

मुझे लगता है कि आप पहले ही जानते हैं कि यह क्यों उत्पन्न होता है। यदि नहीं, तो यह उत्पन्न होता है क्योंकि आपकी परियोजना एक प्रकार की webservice का खुलासा कर रही है। यह हमेशा संकलन समय के दौरान या रनटाइम के दौरान उत्पन्न होता है। रनटाइम में यह टेम्पल फ़ोल्डर में यादृच्छिक नाम – AaA

उत्तर

84

.NET कार्यान्वयन में, XmlSerializer आपके वर्गों (प्रदर्शन कारणों से) को क्रमबद्ध/deserializing के लिए एक अस्थायी असेंबली उत्पन्न करता है। इसे या तो मक्खी पर उत्पन्न किया जा सकता है (लेकिन इसमें प्रत्येक निष्पादन पर समय लगता है), या संकलन के दौरान इसे पूर्वनिर्धारित किया जा सकता है और इस असेंबली में सहेजा जा सकता है जिसके बारे में आप पूछ रहे हैं।

आप परियोजना के लिए विकल्पों में इस व्यवहार को बदल सकते हैं (->उन्नत संकलित विकल्प - टैब संकलित>क्रमबद्धता विधानसभाओं, ऑटो या पर क्रमश: उत्पन्न करें)। प्रोजेक्ट फ़ाइल में संबंधित तत्व जेनरेट सेरियलाइजेशनएस्सेम्लीज़ है, उदाहरण के लिए, <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>

+17

के साथ जेनरेट किया जाता है यदि यह प्रोजेक्ट सेटिंग ऑटो होने पर उत्पन्न होता है, तो इसका मतलब यह है कि इसकी आवश्यकता है? यदि आप X.XMLSerializers.dll को एप्लिकेशन के साथ तैनात नहीं करते हैं तो क्या होगा, क्या यह फ्लाई पर उत्पन्न होगा? – Rory

+1

तो इन विधानसभाओं को प्री-लोड करने के बारे में कोई कैसे जाता है? – Carlo

+0

@ रोरी, मुझे पता है कि यह सवाल पुराना है, लेकिन ऐसा लगता है कि यह मामला है। मेरी तीन परियोजनाओं को 'ऑटो' पर सेट किया गया था, लेकिन केवल एक ने सीरियलाइजेशन डीएलएल बनाया था। – ps2goat

6

मुझे लगता है कि यह प्रदर्शन कारणों से एक्सएमएल धारावाहिकों के जेआईटी (बस समय में) संकलन है।

आपको RegexOptions.Compiled विकल्प का उपयोग कर RegEx उदाहरणों के साथ एक ही चीज़ मिलती है।

मैं कोई .NET CLR विशेषज्ञ नहीं हूं, सटीक तकनीकी विवरण की कमी के लिए खेद है।

5

*.XmlSerializers.dll Sgen.exe [एक्सएमएल Serializer जेनरेटर उपकरण] का उपयोग उत्पन्न कर रहे हैं

देखें Sgen.exe on MSDN

आमतौर Sgen.exe परियोजनाओं की घटनाओं बिल्ड पोस्ट में प्रयोग किया जाता है। देखें कि क्या आपके प्रोजेक्ट में पोस्ट बिल्ड इवेंट है जो *.XmlSerializers.dll

45

एफवाईआई। सटीक चरण स्वत: जनरेट होने से XmlSerializers.dll को रोकने के लिए कर रहे हैं:

  1. वी.एस. में, अपनी परियोजना फ़ाइल पर राइट-क्लिक करें और "गुण"
  2. "बिल्ड" टैब पर क्लिक
  3. बदलें "ऑटो" से लटकती "क्रमबद्धता विधानसभा उत्पन्न करें" के लिए "बंद"
  4. के पुनर्निर्माण और यह चला जाएगा
+14

हाँ लेकिन सवाल था ** क्यों ** यह उत्पन्न होता है! – Hemant

+0

मुझे पता है कि यह एक पुरानी प्रतिक्रिया है, लेकिन एक विनफॉर्म ऐप लक्ष्यीकरण पर वीएस2015 अपडेट 3 में .NET 2.0 x86 को Win10 Ent 64bit सिस्टम पर संकलित करते समय तब भी जब "सीरियलाइजेशन असेंबली जेनरेट करें" ड्रॉप डाउन "ऑफ" पर तब * .XmlSerializers .dll अभी भी उत्पन्न हुआ है। मेरा ऐप एएसएमएक्स वेब सेवा का संदर्भ देता है। शायद वीएस2015 अपडेट 3 में एक बग? – Peter

4

परियोजना केवल वेब अनुप्रयोगों के लिए project.XMLSerialisers.dll उत्पन्न करता है। अन्य अनुप्रयोगों के लिए आपको अलग से sgen चलाने के लिए है।

+1

मेरा WinForms ऐप MyProject.XMLSerializers.dll उत्पन्न करता है जब इसे चालू या ऑटो –

संबंधित मुद्दे