मैं एक ओपन-सोर्स प्रोजेक्ट का प्रबंधन करता हूं और प्रोजेक्ट के बाइनरी पैकेज में जारी की गई बाइनरी पर हस्ताक्षर करना चाहता हूं। मैं अपने प्रोजेक्ट को प्रबंधित और निर्माण करने के लिए विजुअल स्टूडियो csproj
और sln
फ़ाइलों का उपयोग करता हूं, और इन फ़ाइलों को प्रोजेक्ट के स्रोत संकुल के हिस्से के रूप में वितरित करता हूं।ओपन-सोर्स प्रोजेक्ट के लिए मजबूत-नाम कुंजी जोड़ी को प्रबंधित करने का अनुशंसित तरीका क्या है?
मैं अपने निर्माण की उत्पादित बाइनरी पर हस्ताक्षर कैसे कर सकता हूं और snk
कुंजी-जोड़ी फ़ाइल वितरित करने की आवश्यकता नहीं है? यदि मैं असेंबली पर हस्ताक्षर करने के लिए विजुअल स्टूडियो का उपयोग करता हूं, तो प्रत्येक प्रोजेक्ट फ़ाइल को बनाने के लिए अब कुंजी-जोड़ी की एक प्रति की आवश्यकता होती है। मैं कुंजी-जोड़ी को वितरित करने में सहज नहीं हूं, भले ही यह पासवर्ड सुरक्षित है।
संपादित:
एक और चेतावनी है कि InternalsVisibleToAttribute
के माध्यम से परियोजना अनुदान दोस्त पहुँच में कुछ विधानसभाओं, और एक परियोजना संदर्भ के माध्यम से उन मित्रों का निर्माण होता है। नतीजतन, हस्ताक्षरित असेंबली का जिक्र करते समय ऐसी असेंबली को एक मजबूत नाम का उपयोग करने की आवश्यकता होती है। हालांकि, यदि कुंजी-जोड़ी वितरित नहीं की जाती है तो अंत उपयोगकर्ता कैसे स्रोत बना सकते हैं और परियोजना संबंधों को बनाए रख सकते हैं? यदि एक अस्थायी कुंजी-जोड़ी फ़ाइल का उपयोग किया जाता है, तो हस्ताक्षरित असेंबली का सार्वजनिक कुंजी टोकन InternalsVisibleToAttribute
संदर्भों को तोड़ने नहीं देगा?
चूंकि मुझे प्रोजेक्ट और सॉल्यूशन फाइलों को वितरित करने की आवश्यकता है, और चूंकि निर्माण के लिए कुंजी-जोड़ी की आवश्यकता होती है (साइनिंग सक्षम होने पर), क्या मुझे एक "डमी" की-जोड़ी भी वितरित करनी चाहिए ताकि अंतिम उपयोगकर्ता परियोजना फ़ाइलों में हेरफेर किए बिना निर्माण कर सकते हैं? यह प्रोजेक्ट फ़ाइलों को चेक-इन करने के लिए बोझिल लगता है जो हस्ताक्षर अक्षम करते हैं, केवल हर बार रिलीज होने पर इस सेटिंग को टॉगल करना पड़ता है। –
आप निम्न कार्य कर सकते हैं: एक बिल्ड चरण जोड़ें जो जांच करेगा कि कोई .snk फ़ाइल पहले से मौजूद है या नहीं, और यदि आवश्यक हो तो नया उत्पन्न करने के लिए sn.exe चलाएं। फिर यह अन्य उपयोगकर्ताओं के लिए भंडार से बाहर का निर्माण करेगा। – sharptooth