6

हम एक दिलचस्प मुद्दे में भाग गए जो मैंने पहले अनुभव नहीं किया है। हमारे पास विजुअल स्टूडियो 2008 एसपी 1 में बड़े पैमाने पर उत्पादन एएसपी.नेट 3.5 एसपी 1 वेब ऐप प्रोजेक्ट है जो एक वेबसाइट परिनियोजन परियोजना का उपयोग करके संकलित और तैनात हो जाता है। पिछले साल के लिए सबकुछ ठीक काम करता है, कल चेक-इन के बाद तक ऐप ने BadImageFormatException के साथ गंभीर रूप से विफल होने लगा।क्या .NET असेंबली प्रारूप में आकार सीमाएं हैं?

प्रश्न में चेक-इन कुछ भी विशेष रूप से विशेष नहीं बदलता है और ऐप के क्षेत्रों से त्रुटियां भी नहीं आती हैं। परावर्तक का उपयोग करके हमने यह पता लगाने के लिए अपमानजनक तरीकों का निरीक्षण किया कि कोड में कचरा तार थे (which .NET Reflector humorously interpreted as Chinese characters)। हमने लगातार कई मशीनों पर इसे पुन: उत्पन्न किया है, इसलिए यह हार्डवेयर से संबंधित प्रतीत नहीं होता है।

आगे निरीक्षण से पता चला कि उन कचरा तारों ने aspnet_merge.exe पर तैनाती के दौरान इनपुट के रूप में उपयोग किए गए असेंबली में मौजूद हैं।

aspnet_merge.exe/वेब तैनाती परियोजना आउटपुट विधानसभाओं गुण:

  • मर्ज एक भी विधानसभा
  • अपनी ही विधानसभा के लिए प्रत्येक व्यक्ति के फ़ोल्डर उत्पादन मर्ज
  • मर्ज सभी पृष्ठों और करने के लिए सभी outputs एक असेंबली पर नियंत्रण आउटपुट
  • प्रत्येक पृष्ठ के लिए एक अलग असेंबली बनाएं और आउटपुट आउटपुट

अगर हम ("एक भी विधानसभा के लिए सभी आउटपुट मर्ज करें") हम इस मुद्दे, अभी तक अन्य विकल्प पूरी तरह से काम के सभी अनुभव पहला विकल्प को मर्ज विकल्प सेट वेब तैनाती परियोजना गुण में!

मेरा प्रश्न: क्या किसी को पता है कि यह क्यों हो रहा है? क्या aspnet_merge.exe की क्षमताओं के लिए आकार-सीमा है (परिणामी विलय डीएलएल लगभग 19.3 एमबी है)? क्या डब्ल्यूएपी के उत्पादन में विलय के साथ कोई अन्य ज्ञात समस्याएं हैं?

यदि कोई असेंबली प्रारूप/aspnet_merge.exe गुरु इस तरह की किसी भी सीमा के बारे में जानते हैं तो मुझे यह अच्छा लगेगा। मुझे 25 एमबी असेंबली की तरह लगता है, जबकि बड़ा, अपमानजनक नहीं है।

+0

क्या आप छवि को ठीक कर सकते हैं या लिंक को हटा सकते हैं? – Laurel

उत्तर

2

आप PEVerify पर इसे चलाने का प्रयास कर सकते हैं और देख सकते हैं कि आपको क्या मिलता है।

मेरे लिए यह एक एन्कोडिंग समस्या की तरह लगता है ... लेकिन मुझे यकीन नहीं है कि ऐसा क्यों होगा। वहां तकनीकी रूप से मेटाडेटा की मात्रा की सीमा है जो असेंबली में मेटाडेटा टेबल में फिट हो सकती है, लेकिन मुझे संदेह है कि यह समस्या है या नहीं।

यदि आप Ildasm में एक्सई खोलते हैं तो आप मेटाडेटा टेबल का आकार देख सकते हैं, आप आंकड़े (व्यू-> सांख्यिकी) या मेटाडेटा टेबल की गणना को देख सकते हैं जो 2 चरण की प्रक्रिया है: 1। देखें-> मेटाइन्फो-> कच्चा: गणना, आकार 2. प्रेस Ctrl + M

+0

उपकरण के लिए धन्यवाद। मुझे उन लोगों को आजमाएं और रिपोर्ट करें कि उन्हें क्या मिल रहा है।जब मैं अपमानजनक विधि को देखने के लिए परावर्तक का उपयोग करता हूं (ऊपर स्क्रीनशॉट देखें), यह स्पष्ट है कि असेंबली सही नहीं है। क्या पीईवीरिफ मुझे बताओ * कहां * यह सही नहीं है या वे * क्यों * कहने में सक्षम होंगे? – mckamey

+0

अगर मुझे सही याद है (यह थोड़ी देर बाद मैंने इसका इस्तेमाल किया था), हाँ यह इंगित करेगा कि मेटाडेटा में कौन सी त्रुटियां पाई जाती हैं। हालांकि आपको कुछ चीजों का अनुवाद करने के लिए ildasm में इसे खोलने की आवश्यकता हो सकती है जैसे कि त्रुटि संदेश में उल्लिखित टोकन। PEVerify भी एक बहुत ही कच्चा टूल है - जिसका अर्थ है कि यह हर दिन डेवलपर के लिए डिज़ाइन नहीं किया गया है, आपको यह देखने के लिए कुछ त्रुटि संदेशों को Google पर लॉग इन करना पड़ सकता है कि यह किस बारे में बात कर रहा है। –

0

क्या BadImageFormatException को x86 पर x64 कोड चलाने का प्रयास नहीं किया जाता है?

+0

यह ऐसी स्थितियों में से एक है जहां यह होता है (http://msdn.microsoft.com/en-us/library/system.badimageformatexception.aspx) लेकिन इस मामले में ऐसा नहीं है। व्यक्तिगत असेंबली स्वयं द्वारा ठीक काम करती है लेकिन एक बार विलय हो जाती है। – mckamey