c# - क्या ComV अदृश्य(गलत) का उपयोग करते समय एक गाइड को निर्दिष्ट करने का कोई मतलब नहीं है?




.net guid (2)

जब आप Visual Studio में एक नया C # प्रोजेक्ट बनाते हैं, तो निर्मित असेंबलीInfo.cs फ़ाइल में एक असेंबली GUID निर्दिष्ट करने वाली विशेषता शामिल होती है। विशेषता के ऊपर टिप्पणी बताती है कि इसका उपयोग "अगर यह परियोजना COM के संपर्क में है"।

मेरी किसी भी असेंबली में ऐसे प्रकार नहीं हैं, जो COM को दिखाई देने की आवश्यकता है, इसलिए मैंने अपनी विधानसभा को [assembly: ComVisible(false)] साथ चिह्नित किया है। तो क्या GUID को निर्दिष्ट करने का कोई मतलब है?

मेरी भावना यह है कि इसका उत्तर "नहीं" है - इसलिए डिफ़ॉल्ट असेंबली [assembly: ComVisible(false)] फ़ाइल में दोनों [assembly: ComVisible(false)] और [assembly: Guid("...")] क्यों है?

संपादित करें:

प्रतिक्रियाओं को संक्षेप में प्रस्तुत करने के लिए:

उनके बीच, उत्तर बताते हैं कि एक GUID निर्दिष्ट करना आवश्यक है यदि और केवल COM इंटरॉप का उपयोग किया जा रहा है। तो, मेरी स्थिति में, एक GUID आवश्यक नहीं है।

शार्पट्यूट आगे बताता है कि [assembly: ComVisible(false)] COM इंटरॉप का उपयोग नहीं करता है, क्योंकि यह व्यक्तिगत प्रकारों के लिए ComVisible को ओवरराइड करना संभव है। यह इस कारण से है कि डिफ़ॉल्ट AssembyInfo.cs में [assembly: ComVisible(false)] और एक GUID दोनों शामिल हैं।


COM में लगातार GUIDs जरूरी हैं। [असेंबली: गाइड] विशेषता पुस्तकालय प्रकार टाइप करती है। निश्चित रूप से प्रोजेक्ट टेम्प्लेट ऑटो-जेनरेट करता है यह सुनिश्चित करने के लिए कि प्रोग्रामर एस प्रदान करने के लिए नहीं भूलता है जब वह एस / अदृश्य को सच करने के लिए फ़्लिप करता है।

यदि कोई असेंबली [गाइड] प्रदान नहीं की जाती है तो Tlbexp.exe असेंबली के नाम, संस्करण और सार्वजनिक कुंजी में से एक को संश्लेषित करता है। यह वास्तव में बहुत अच्छा नहीं है, टाइप लाइब्रेरी में पहले से ही एक संस्करण है। [असेंबली वर्जन] बदलने से एक अलग LIBID उत्पन्न होगा। विशेष रूप से खराब है जब आप संस्करण के लिए ऑटो-इंक्रीमेंट विकल्प का उपयोग करते हैं (जैसे 1.0। *), तो आप जल्दी से मृत टाइपलिब रजिस्ट्री कुंजी के एक पहाड़ के साथ रजिस्ट्री को भर सकते हैं।

लंबी कहानी छोटी है, यह बहुत बुरा हादसों से बचा जाता है।


नहीं, इसे शामिल करने का कोई वास्तविक कारण नहीं है। यह बहुत विशिष्ट COM इंटरॉप परिदृश्यों को छोड़कर वास्तव में बहुत अनावश्यक है। हालांकि मुझे लगता है कि GUID होने के बारे में कुछ उपयोगी हो सकता है जिसे आप प्रतिबिंब के साथ एक्सेस कर सकते हैं। लेकिन जब से यह वहाँ होने की गारंटी नहीं है, इसकी तरह आप इस पर भरोसा नहीं कर सकते।





comvisible