2009-03-06 9 views
21

हाल ही में, हम अपने मूल और .NET COM घटकों के लिए खुशी से registration-free COM का उपयोग कर रहे थे। हालांकि, हम एक अजीब मुद्दे में भाग गए जहां हमारे एप्लिकेशन ने विंडोज एक्सपी एसपी 3 (लेकिन विस्टा पर नहीं) पर यादृच्छिक रूप से क्रैश करना शुरू कर दिया, जब हमने रिलीज उम्मीदवार से रिलीज होने के लिए केवल .NET असेंबली के संस्करण संख्या को बदल दिया। (क्या आप सिर्फ मर्फी के कानून से नफरत करते हैं?)क्या कोई भी .NET घटकों के साथ पंजीकरण-मुक्त COM का सफलतापूर्वक उपयोग कर रहा है?

कई खोए हुए आदमी-दिन और दांत पीसने के बाद, हमने पाया कि यह मुद्दा known bug in sxs.dll था जो .NET कक्षा के बारे में जानकारी पुनर्प्राप्त करते समय भ्रष्टाचार का कारण बनता है। एक हॉट-फ़िक्स है जो समस्या को गायब कर देता है लेकिन हॉट-फ़िक्स का पुनर्वितरण करने का इरादा नहीं है।

हम थोड़े से रुक गए हैं कि पंजीकरण मुक्त COM कार्यान्वयन में ऐसी भयानक बग है। क्या कोई भी .NET घटकों के लिए पंजीकरण-मुक्त COM का सफलतापूर्वक उपयोग कर रहा है? आपने इस मुद्दे के आसपास कैसे काम किया?

+0

+1 महत्वपूर्ण मुद्दा है जो मैं के बारे में पता नहीं था! बीटीडब्ल्यू क्या मैं सुझाव दे सकता हूं कि आप "regfreecom" टैग जोड़ें क्योंकि रजिस्ट्री मुफ्त COM प्रश्नों के लिए टैग अधिक आम है? – MarkJ

+1

... असल में मैंने इसे खुद ही दोबारा बनाया ... उम्मीद है कि ठीक है – MarkJ

+0

ज़रूर। लगातार टैग अधिक उपयोगी हैं। –

उत्तर

9

यह समस्या इस बात से संबंधित है कि एसएक्सएस कक्षा की जानकारी के आकार की गणना कैसे करता है। असेंबली का संस्करण संख्या इस जानकारी का हिस्सा है।

चूंकि यह रिलीज उम्मीदवार संस्करण संख्या के साथ काम कर रहा था, शायद आपके लिए वर्कअराउंड रिलीज के संस्करण संख्या को आरसी रिलीज के समान लंबाई बनाना है।

यदि यह आपके लिए काम नहीं करता है, तो हॉटफिक्स के लिए पुनर्वितरण अधिकारों का अनुरोध करने के लिए एक स्थापित प्रक्रिया है। मैं इस मार्ग को आगे बढ़ाने के लिए माइक्रोसॉफ्ट ग्राहक समर्थन संलग्न करता हूं।

4

हम दोनों देशी और .NET घटकों के लिए पंजीकरण-मुक्त COM का उपयोग कर रहे हैं। हमने इन घटकों के लिए एक निश्चित असेंबली संस्करण संख्या का उपयोग करने का निर्णय लिया है (मुख्य रूप से रजिस्ट्री को अव्यवस्थित करने के लिए जब .NET घटकों को गतिशील बिल्ड संख्या/* था)। आदर्श नहीं है लेकिन हमारे पास यह निर्धारित करने के अन्य तरीके हैं कि किसी दिए गए घटक का कौन सा संस्करण उपयोग किया जा रहा है (वे कभी भी व्यक्तिगत रूप से पैच नहीं किए जाते हैं)।

यह वास्तव में एक बहुत ही बुरा मुद्दा की तरह लगता है! उस केबी आलेख में लगभग ऐसा लगता है कि एसएक्सएस का उपयोग वैकल्पिक है ... जहां तक ​​मुझे पता है कि यह reg-free COM करने का एकमात्र तरीका है?

+1

उत्तर देने के लिए धन्यवाद। बिना किसी मुद्दे के .NET के लिए reg-free COM का उपयोग करके दूसरों के बारे में सुनना कम से कम इंगित करता है कि हम बस दुर्भाग्यपूर्ण हो सकते हैं। ध्यान दें कि हमारे लिए इस मुद्दे को किस प्रकार ट्रिगर किया गया था शायद असेंबली के आकार में बदलाव था। संस्करण को बदलना शायद आपकी रक्षा नहीं करेगा। –

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