2011-08-31 19 views
15

अभी हमारे असेंबली में संस्करण संख्या 2.0.831.0 है। जैसा कि मैं इसे समझता हूं, यह प्रमुख संस्करण, मामूली संस्करण, दिनांक और निर्माण संख्या है। यदि मैं एक ही दिन में बदलाव करता हूं और फिर उसी दिन निर्माण करता हूं तो यह 2.0.831.1, 2.0.831.2 आदिटीमसिटी संस्करण मैच बनाना .NET असेंबली संस्करण

मेरा टीमसिटी बिल्ड नंबर प्रारूप बस 2. {0} है जहां {0} एक ऑटो वृद्धि हुई संख्या है जो अभी जाती है हमेशा के लिए (2.1 9 5, 2.1 9 6 आदि)।

मैं टीमसिटी को असेंबली संस्करण की तरह कैसे दिख सकता हूं? हम चेंज लॉग को असेंबली संस्करण से जोड़ना चाहते हैं ताकि कोई भी कह सके कि असेंबली संस्करण 2.0.831.2 इन फ़ाइलों में इन बदलावों को था।

अतिरिक्त जानकारी: हमारा निर्माण चरण "एमएसबिल्ड" के बजाय "विजुअल स्टूडियो (एसएलएन)" विकल्प का उपयोग करता है, यदि यह मायने रखता है। यदि हम मायने रखते हैं तो हम स्रोत नियंत्रण के लिए सबवर्जन का उपयोग करते हैं। हमारा टीमसिटी संस्करण 6.5.1 (17834 बिल्ड) है।

+0

http://stackoverflow.com/questions/1041153/teamcity-labeling-vcs-subversion-with-an-artifacts-file-version – sylvanaar

उत्तर

21

मैं आपको semantic versioning scheme{major}.{minor}.{patch} अपनाने और बिल्ड नंबर {major}.{minor}.{patch}.{build} के लिए चौथा तत्व जोड़ना चाहता हूं। वर्जनिंग योजना में निर्माण तिथि शामिल करने के लिए यह और अधिक उपयोगी है।

टीमसिटी 6.5 (आपने एक संस्करण निर्दिष्ट नहीं किया है) में एक बिल्ड सुविधा है जिसका उपयोग बिल्डिंग के दौरान AssemblyInfo.cs में संस्करण को पैच करने के लिए किया जा सकता है। AssemblyInfo Patcher के लिए प्रलेखन देखें।

AssemblyInfo patcher dialog (TeamCity documentation)

फिर आप जिस तरह से आप पैचिंग सुविधा के लिए अपना विधानसभा में है और खुद को निर्माण के लिए स्वरूप का उपयोग करना, के रूप में भी चाहते हैं में बिल्ड नंबर प्रारूप निर्धारित कर सकते हैं।

+0

उत्तर के रूप में ccellar पर टिप्पणी करें क्योंकि मुझे टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं मिली है। संस्करण स्ट्रिंग प्रारूप है: major.minor [.build [.revision]] बिल्ड संख्या तीसरा तत्व है, चौथा नहीं। यदि असेंबली वर्जन में यह प्रारूप नहीं है तो संस्करण वर्ग में बिल्ड और संशोधन गुणों में गलत मान होंगे। http://msdn.microsoft.com/en-us/library/system.version।एएसपीएक्स – jbtibor

+2

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

+0

आप सेमेस्टर-संस्करण निर्दिष्ट करने के लिए AssemblyInfo.cs में विशेषता असेंबलीInformationalVersionAttribute का उपयोग कर सकते हैं (यह विशेषता आपको संस्करण के रूप में किसी स्ट्रिंग को निर्दिष्ट करने की अनुमति देगी)। इस मूल्य को तब उठाया जा सकता है और निर्माण प्रक्रिया द्वारा उपयोग किया जा सकता है। मुझे यह विचार पसंद है कि वह उस चीज़ के लिए संस्करण जानकारी तय करने के लिए बदलाव करने से पहले डेवलपर पर निर्भर करता है, जिसमें वह चेक-इन करता है। –

6

एक समाधान एमएसबिल्ड धावक का उपयोग करना है, और एक एमएसबिल्ड स्क्रिप्ट लिखना जो असेंबलीइन्फो फ़ाइल से संस्करण जानकारी पढ़ता है, बिल्ड चलाने के दौरान टीमसिटी बिल्ड संस्करण को उस मान पर सेट करता है, फिर उस संस्करण के बिल्ड नंबर भाग को बढ़ाता है , और विधानसभाइंफो में मूल्य वापस लिखता है।

यह विशेष रूप से मामूली नहीं है, क्योंकि आपको कस्टम एमएसबिल्ड स्क्रिप्ट लिखने की समझ रखने की आवश्यकता है, और आपको संस्करण जानकारी पढ़ने/लिखने के लिए कुछ समुदाय कार्यों आदि का उपयोग करने की आवश्यकता होगी।

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

एक उत्कृष्ट लेख here है, जो एमएसबिल्ड के साथ सामान्य सीआई कार्यों को करने का वर्णन करता है। वह CruiseControl.NET का उपयोग कर रहा है, लेकिन इसमें से अधिकतर अभी भी लागू होता है। यदि आप टीमसिटी 6.5 चला रहे हैं, तो मैं विशेष रूप से अपनी बिल्ड सुविधाओं का उपयोग करने के लिए देखता हूं, क्योंकि कस्टम एमएसबिल्ड स्क्रिप्ट की तुलना में यह बनाए रखना बहुत आसान होगा।

+1

यह सब समझ में आता है। क्या इसे पूरा करने के लिए कोई ट्यूटोरियल है? मैंने एमएसबिल्ड के साथ पहले कभी काम नहीं किया है। क्या आपके पास कोई विशिष्ट उदाहरण हैं? – Dzejms

+0

उत्तर अद्यतन किया गया। – devdigital

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