2011-04-07 11 views
8

हमारे पास इसमें कई परियोजनाओं (शायद 20 या अधिक) के साथ समाधान है। हाल ही में हमने कुछ बदलाव किए हैं जिनके लिए उन दो असेंबली को COM से कॉल करने योग्य होना आवश्यक है, जिसका अर्थ है कि हमें उन्हें मजबूत नाम देने की आवश्यकता है। वे असेंबली हमारी परियोजना में दूसरों का संदर्भ देते हैं, जिसका अर्थ है कि उन्हें मजबूत नाम भी होना चाहिए। उनके पास InternalsVisible भी विशेषताएं हैं, इसलिए जो विधानसभाएं दी जाती हैं उन्हें भी मजबूत नाम दिया जाना चाहिए।मजबूत नामित/हस्ताक्षरित असेंबली के पेशेवर/विपक्ष

शिकार करने के लिए शिकार करने की कोशिश करने के बजाय, जो असेंबली को हस्ताक्षर/मजबूत नामकरण की आवश्यकता है, मैंने अनुशंसा की कि हम उन्हें केवल मजबूत नाम दें। इसने जोखिम के बारे में चिल्लाहट में कुछ लोगों को रखा है। मैं बहस कर रहा हूं कि कोई जोखिम नहीं है, लेकिन वे असेंबली पर हस्ताक्षर करने के पेशेवरों और विपक्ष चाहते हैं। केवल बातें मैं के साथ आने कर लिया हैं:

पेशेवरों

  • यह एक आवश्यकता कॉम से विधानसभा कॉल करने के लिए है
  • यह हमें GAC में विधानसभाओं डाल करने के लिए की अनुमति होगी (हम ऐसा नहीं करते अब)
  • यह छेड़छाड़ से बचाता है (हम, आवेदन की मेजबानी यह ग्राहक साइटों पर स्थापित नहीं है, ताकि बड़ा नहीं एक मुद्दा)

विपक्ष

  • यह जरूरी है कि हर विधानसभा हम भविष्य में उपयोग हस्ताक्षर किए जाने

मैं दो विशिष्ट प्रश्न हैं:

  1. क्या आप कहेंगे, सामान्य रूप में, यह हस्ताक्षर/मजबूत नाम विधानसभाओं के लिए एक अच्छा विचार है?
  2. क्या आप किसी अन्य पेशेवर या विपक्ष के बारे में सोच सकते हैं?
+1

यह विचार कहां है कि अब सब कुछ हस्ताक्षरित होना चाहिए? यह अनियंत्रित असेंबली है जो वायरल हैं: आप एक हस्ताक्षरित असेंबली से एक हस्ताक्षरित असेंबली का संदर्भ नहीं दे सकते हैं। हालांकि आप विपरीत कर सकते हैं। जिन पर * हस्ताक्षर किए जाने चाहिए, वे पहले पैराग्राफ में उल्लिखित कारणों के कारण हैं। –

+0

बीटीडब्ल्यू: यह छेड़छाड़ नहीं रोकता है। आप एसएन को बंद कर सकते हैं, और रेफरेंसिंग असेंबली बदल सकते हैं, और आप जाने के लिए अच्छे हैं। मैंने इसे रिफ्लेक्टर और रिफ्लेक्सिल –

+0

@ डेविड का उपयोग करके कुछ वाणिज्यिक सॉफ्टवेयर पर सबूत-ऑफ-अवधारणा के रूप में किया: और आप इसे अकेले इलज्म और हल्केपन के साथ भी कर सकते हैं। @ भविष्य डेविड: धन्यवाद, मैंने हस्ताक्षरित/हस्ताक्षरित आदेश का स्विच किया। –

उत्तर

3
  • यह ClickOnce की एक आवश्यकता है कि आपके विधानसभाओं
  • ओपनसोर्स परियोजनाओं का एक बहुत प्रवेश किया हुआ है पर हस्ताक्षर किए विधानसभाओं वितरित नहीं है, और अक्सर अपने खुद के SNK
+0

1 उत्तर में संयुक्त। इस पर समुदाय प्रतिक्रिया के लिए धन्यवाद। गैर-हस्ताक्षरित वितरण के उल्लेख के लिए –

+0

+1। यह एक परेशानी है जब आपको सामान स्थापित करना होता है ताकि आप ओपन-सोर्स प्रोजेक्ट की बिल्ड स्क्रिप्ट चला सकें, क्योंकि देवों ने असेंबली पर हस्ताक्षर करने के बारे में कुछ एफयूडी सुना और डर गए। –

+0

हमने ओपन सोर्स इश्यू पर विचार किया है। हमारी कंपनी ओपन सोर्स सॉल्यूशंस को शामिल करने में अनिच्छुक है, और कुछ जो हम करते हैं या तो एक हस्ताक्षरित असेंबली प्रदान करते हैं या एक हस्ताक्षरित संस्करण बनाने के लिए बहुत आसान थे। –

5

साथ संकलित करने के लिए गैर तुच्छ हैं आपका एकल कंस फर्जी है। यह वास्तव में एक समर्थक है।

अहस्ताक्षरित विधानसभाओं अहस्ताक्षरित विधानसभाओं द्वारा विशेष रूप से इस्तेमाल किया जा सकता। हस्ताक्षरित असेंबली हस्ताक्षरित असेंबली और हस्ताक्षरित असेंबली दोनों द्वारा उपयोग की जा सकती हैं।

+4

मुझे लगता है कि यह एक समर्थक भी है, लेकिन इसके बारे में उद्देश्य होने के कारण, इसका मतलब यह है कि हम किसी भी सॉफ्टवेयर को संगठन से लाते हैं (वाणिज्यिक, ओपन सोर्स, शेयरवेयर, जो भी हो) को एक हस्ताक्षरित संस्करण प्रदान करना होगा _or_ हमें होना चाहिए अपने स्वयं के स्नैक के साथ एक हस्ताक्षरित संस्करण बनाने में सक्षम। मुझे लगता है कि व्यापार के परिप्रेक्ष्य से एक माना जाता है। –

+1

@ क्रेग: यह एक वैध बिंदु है। मैं जिम्मेदार प्रदाताओं के साथ एक आदर्श परिस्थिति के बारे में सोच रहा था :(। यह दुख की बात है कि हर कोई जो पुन: प्रयोज्य सॉफ़्टवेयर को संकेत देता है, वह इसके बारे में दो बार सोचने के बिना बाहर निकलता है: यह आपके सभी ग्राहकों को खुश करने का एकमात्र तरीका है। –

2

आप इसे एक COM घटक बनाने के लिए एक विधानसभा पर हस्ताक्षर करने की आवश्यकता नहीं है "यह कॉम से विधानसभा कॉल करने के लिए एक आवश्यकता है।" मैंने असेंबली पर हस्ताक्षर किये बिना बहुत सारे COM-server को लागू किया।

कुछ और विपक्ष:

  • आप अन्य सभी विधानसभाओं यह आवश्यकता होती है => कोई साझा घटकों को आसानी से
  • गैर पर हस्ताक्षर नहीं उपयोग कर सकते हैं तीसरे पक्ष के घटकों की जगह के बिना एक नए संस्करण के साथ एक विधानसभा अद्यतन नहीं कर सकते हैं (कई नि: शुल्क/OpenSource)
  • GAC में हस्ताक्षर किए गए विधानसभाओं पुष्टि नहीं कर रहे हैं, किसी बुराई को बदल सकते हैं/कुछ भी साथ अपना हस्ताक्षरित विधानसभा की जगह और अपने कार्यक्रमों खुशी से इस कुछ भी स्वीकार link
+0

"आप अपडेट नहीं कर सकते अन्य सभी असेंबली को प्रतिस्थापित किए बिना एक नए संस्करण के साथ एक असेंबली => कोई साझा घटक आसानी से नहीं "सच नहीं है। आपको बाध्यकारी रीडायरेक्ट के लिए अपनी कॉन्फ़िगरेशन में एक पंक्ति जोड़नी है। यह अभी भी एक कंस हो सकता है, लेकिन आपदाजनक नहीं है। – jbtule

+1

आपको घटक का उपयोग करने वाले प्रत्येक एप्लिकेशन में इसे जोड़ना होगा। यदि आपके पास ऐप-> मॉड्यूल-> घटक है और आप घटक को अपडेट नहीं करते हैं तो ऐप को घटक के लिए रीडायरेक्ट जोड़ना होगा, जिसे इसके बारे में भी पता नहीं है। मॉड्यूल – Firo

+0

में उपयोग की जाने वाली उपयोगिता डीएलएस के लिए परिदृश्य "आप इसे अन्य सभी असेंबली को बदले बिना किसी नए संस्करण के साथ असेंबली अपडेट नहीं कर सकते हैं" आपको माइक्रोसॉफ्ट को यह बताना चाहिए, क्योंकि वे अब लंबे समय से ऐसा कर रहे हैं। – Voo

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