जवाबों:
मुझे पहले अपनी विधानसभा के मजबूत नामकरण के लाभों की सूची दें:
अपनी असेंबली का नामकरण करने से आप अपनी असेंबली को ग्लोबल असेंबली कैश (GAC) में शामिल कर सकते हैं। इस प्रकार यह आपको कई अनुप्रयोगों के बीच साझा करने की अनुमति देता है।
मजबूत नामकरण उस विधानसभा के लिए एक अद्वितीय नाम की गारंटी देता है। इस प्रकार कोई भी एक ही विधानसभा नाम का उपयोग नहीं कर सकता है।
मजबूत नाम एक विधानसभा के संस्करण वंश की रक्षा करता है। एक मजबूत नाम यह सुनिश्चित कर सकता है कि कोई भी आपके विधानसभा के बाद के संस्करण का उत्पादन करने में सक्षम नहीं है। एप्लिकेशन उपयोगकर्ताओं को यह सुनिश्चित किया जाता है कि वे जिस विधानसभा को लोड कर रहे हैं उसका एक संस्करण उसी प्रकाशक से आता है, जिस संस्करण के साथ एप्लिकेशन बनाया गया था।
Microsoft से अधिक मजबूत नामकरण सशक्त-नामांकित असेंबली ( MSDN ) में है।
ऐसी कौन सी चीजें हैं जो एक सामान्य सभा के साथ नहीं की जा सकती हैं?
चूंकि नुगेट के उदय के साथ शुरू होने वाली सभी चर्चाओं ने पूरी तरह से मजबूत नामांकित असेंबली से छुटकारा पाने का सुझाव दिया, जो मेरी कंपनी ने कोशिश की और जब यह अनुप्रयोग सेटिंग्स की बात आती है, तो व्यवहार का एक महत्वपूर्ण बदलाव आया:
यदि आप VisualStudio द्वारा प्रदान की गई स्वचालित ऐप या उपयोगकर्ता स्कोप की गई एप्लिकेशन सेटिंग्स का उपयोग करते हैं (सिस्टम से कनेक्ट कर रहा है। स्थित है।
लेकिन मजबूत नाम के बिना EXE के स्थान (= पथ) का उपयोग हैश मान बनाने के लिए किया जाएगा जो पहले से ही DEBUG और RELEASE बिल्ड के बीच भिन्न होता है, जिससे% निर्देशिका LOCALAPPDATA% के अंदर कई निर्देशिकाएं बनाई जाती हैं, जिसका नाम "YourAppleation.exe_Url_dfg8778d6fs7g6d7f8g69sdf" है। यह ClickOnce परिनियोजन के लिए अनुपयोगी बनाता है, जहां इंस्टॉलेशन डायरेक्टरी हर अपडेट के साथ बदलती रहती है।
मैं जोड़ना चाहूंगा कि एक मजबूत नाम के बिना आप कॉन्फ़िगर फ़ाइलों में बाइंडिंग पुनर्निर्देश का उपयोग नहीं कर सकते।
यह काम नहीं करेगा:
<dependentAssembly>
<assemblyIdentity name="MyAssembly.MyComponent" publicKeyToken="null" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
आपके पास एक सार्वजनिक कुंजी टोकन होना चाहिए
<dependentAssembly>
<assemblyIdentity name="MyAssembly.MyComponent" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
बस एक उदाहरण: मैं सुरक्षा में अधिक जोर देते हुए एक उत्तर देना चाहूंगा । मामले में हम असेंबलियों को एक स्रोत कोड के साथ बनाते हैं जिसे हम किसी तीसरे पक्ष के लिए फिर से उपयोग नहीं करना चाहते हैं लेकिन हम चाहते हैं कि यह परीक्षण योग्य हो, हम एक असेंबली पर दृढ़ता से हस्ताक्षर कर सकते हैं और केवल उन असेंबलियों के लिए आंतरिक रूप से दृश्यमान बना सकते हैं एक ही हस्ताक्षर।