2009-09-10 13 views
7

मैं आगामी परियोजना के लिए दैनिक निर्माण को लागू करने की उम्मीद कर रहा हूं।असेंबली संस्करण को संभालने का सही तरीका क्या है?

लेकिन ऐसा करने से पहले, मुझे यह जानने की ज़रूरत है कि एक असेंबली को सही तरीके से कैसे संस्करणित किया जाए।

मैं निम्नलिखित चिंता है:

  • प्रत्येक विधानसभा एक स्वतंत्र संस्करण संख्या होना चाहिए या वे सभी एक ही संस्करण साझा करना चाहिए?
  • क्या मुझे बिल्ड और संशोधन के लिए * संस्करण का उपयोग करना चाहिए?
  • क्या दैनिक निर्माण के लिए संशोधन प्रासंगिक है?

उत्तर

8

हम निम्न चरणों का उपयोग एक ही संस्करण संख्या के साथ हमारे उत्पादों के भीतर सभी विधानसभाओं टिकट: संस्करण संख्या की जानकारी युक्त एक AssemblyInfoCommon.cs को

  • लिंक सभी विधानसभाओं: देखना एक के लिए here उदाहरण।

  • निर्माण का उपयोग कर के भाग के रूप AssemblyInfoCommon.cs फ़ाइल (हमारे मामले में) उत्पन्न NAnt कार्य asminfo, क्रूज नियंत्रण नेट और SVN संशोधन labeller

हमारे मामले में, हम डॉन * संस्करण का उपयोग नहीं करते हैं। सभी तैनात संस्करण बिल्ड सर्वर पर बनाए गए हैं। हम अपने डेस्कटॉप पर संस्करण संख्या के बारे में चिंता नहीं करते हैं।

+0

+1। बिल्ड दोहराने योग्य होना चाहिए, जिसका अर्थ है कि उन्हें स्क्रिप्ट किया जाना चाहिए, और उन्हें अपने डेस्कटॉप पर करने से आलसी होना बहुत आसान हो जाता है और बिल्ड स्क्रिप्ट बनाने की परेशानी के बजाय इसे "बस" कैसे करना है। – gregmac

0

तो प्रत्येक विधानसभा एक ही संस्करण जो आम तौर पर रिलीज़ संस्करण का एक संयोजन है होना चाहिए यानी 3.4 + बिल्ड नंबर जो एक दृश्य है कि रिहाई का निर्माण सर्वर पर संकलित किया गया है समय की संख्या का प्रतिनिधित्व करता है। संशोधन प्रासंगिक है क्योंकि यह उस रिलीज के लिए बनाए गए निर्माण की संख्या को प्रदर्शित करता है। आप वास्तव में इसे 2 तरीकों में से एक में कर सकते हैं। पहला तरीका यह होगा कि यदि आपने रिलीज यानी 3.4 की योजना बनाई है तो जब आप उस रिलीज पर काम करना शुरू करते हैं तो यह आपका प्रमुख संस्करण संख्या और बिल्ड के साथ आपका मामूली संस्करण संख्या वृद्धि है। ऐसा करने का एक और तरीका है कि जब आप क्यूए/रिग्रेशन में अपनी रिहाई करने के लिए तैयार हों तो उसमें बिल्ड संस्करणों को कड़ाई से नियंत्रित करना है, आप अपना प्रमुख संस्करण 3.4 पर सेट करते हैं और आप अपना मामूली संस्करण संख्या 0 पर छोड़ देते हैं। आप चीजों को कसकर नियंत्रित करते हैं जब तक आप रिलीज नहीं करते। इस तरह आप मामूली संस्करण संख्या के माध्यम से अपने सर्विस पैक नंबरिंग को नियंत्रित कर सकते हैं। उम्मीद है की यह मदद करेगा।

2

उत्तर वास्तव में इस बात पर निर्भर करता है कि आप असेंबली संस्करण संख्याओं के साथ क्या करने की कोशिश कर रहे हैं। यदि आप क्लिकऑन परिनियोजन कर रहे हैं और अद्यतन असेंबली के स्वतंत्र डाउनलोड करना चाहते हैं, तो आपको प्रत्येक असेंबली को स्वतंत्र रूप से संस्करणित करने की आवश्यकता होगी - अन्यथा, मुझे लगता है कि विधानसभा संस्करण सॉफ़्टवेयर रिलीज़ नंबर से मेल खाते हैं। अधिक जटिल परिदृश्यों में आपको एक और रणनीति की आवश्यकता हो सकती है।

एक पूर्व कंपनी में उपयोग की जाने वाली एक योजना प्रमुख थी .minor.revision.build - इसलिए उत्पाद के संस्करण 1.0 में, प्रत्येक असेंबली पर असेंबली संस्करण और असेंबली फ़ाइल संस्करण 1.0.0.112 9 (उदाहरण के लिए) था। इससे बिल्डिंग नंबर तक, कौन सा असेंबली सॉफ्टवेयर रिलीज का हिस्सा था, इसका मिलान करना आसान हो गया। हमने इसे प्री-संकलन खोज का उपयोग करके पूरा किया और हमारी स्वचालित बिल्ड प्रक्रिया द्वारा प्रदान किए गए संस्करण संख्याओं के साथ टोकन को प्रतिस्थापित करने के लिए प्रत्येक AssemblyInfo.cs फ़ाइल में प्रतिस्थापित किया।

0

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

जहां तक ​​संख्या बढ़ती है, मैं गाय स्टारबक (major.minor.revision.build) से सहमत हूं। जिस तरह से मैंने हमेशा यह किया है और यह हमेशा अच्छा काम करता है।

0

हमारे पास लगातार रिलीज़ (लगभग 1 महीने) के साथ एक बड़ा ऐप (सैकड़ों असेंबली) है। हम "प्रत्येक असेंबली को एक ही संस्करण देते हैं" के लिए गए थे, लेकिन यह मेरे लिए निराशा का निरंतर स्रोत है कि 1 संस्करण के लिए असेंबली पूरी तरह से असंगत हैं, इस तथ्य के बावजूद कि इन assmblies के इंटरफेस शायद ही कभी (अगर कभी) बदल जाते हैं।

यदि यह आपके लिए है तो आपको अलग-अलग संस्करणों से अलग-अलग संस्करणों से लाभ हो सकता है - प्रत्येक बार जब आप अपनी असेंबली को अपडेट करते हैं तो केवल उन मामलों में संस्करण संख्या में वृद्धि करने के लिए परेशान होते हैं जहां आप वास्तव में असेंबली बाध्यकारी तोड़ना चाहते हैं (उदाहरण के लिए यदि इंटरफ़ेस बदलता है, या परिवर्तन अन्यथा महत्वपूर्ण हैं कि आप किसी को पिछले संस्करण का उपयोग करके गोपनीय रूप से रोकना चाहते हैं)। बिल्ड सर्वर द्वारा बिल्ड नंबरों के लिए

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

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