हम अपने स्वचालित निर्माण के लिए xUnit.net के साथ ऐसा करते हैं। हम CruiseControl.net
(और टीमसिटी को आजमा रहे हैं) का उपयोग करते हैं। एमएसबिल्ड कार्य जो हम निरंतर एकीकरण के लिए चलाते हैं, स्वचालित रूप से हमारे लिए बिल्ड नंबर बदलता है, इसलिए परिणामस्वरूप ज़िप फ़ाइल में डीएलएल और EXE का एक उचित संस्करण सेट होता है।
Our MSBuild file contains a UsingTask reference for a DLL which does regular expression replacements: (you're welcome to use this DLL, as it's covered by the MS-PL license as well)
इसके बाद, हम बिल्ड नंबर निकालते हैं, जो सीआई सिस्टम द्वारा स्वचालित रूप से प्रदान किया जाता है। यदि आप चाहें तो स्रोत संशोधन संख्या प्रदान करने के लिए आप अपना स्रोत नियंत्रण प्रदाता भी प्राप्त कर सकते हैं, लेकिन हमने पाया कि सीआई सिस्टम में बिल्ड # अधिक उपयोगी था, क्योंकि न केवल सीआई बिल्ड नंबर द्वारा एकीकरण परिणाम देख सकते हैं, जो कि एक प्रदान करता है परिवर्तन में शामिल किए गए परिवर्तनों (ओं) पर वापस लिंक करें।
<!-- Cascading attempts to find a build number -->
$(BUILD_NUMBER)
$(ccnetlabel)
0
(हम BUILD_NUMBER का प्रयास करते हैं, जो TeamCity से है, फिर ccnetlabel, जो CC.net से है, और यदि न तो मौजूद है, तो हम 0 पर डिफ़ॉल्ट हैं, ताकि हम स्वचालित रूप से स्वचालित बिल्ड स्क्रिप्ट का परीक्षण कर सकें।)
इसके बाद, हमारे पास एक ऐसा कार्य है जो बिल्ड नंबर को GlobalAssemblyInfo.cs फ़ाइल में सेट करता है जिसे हम अपनी सभी परियोजनाओं में लिंक करते हैं:
यह असेंबली वर्जन विशेषता पाता है, और a.b.c.bildNumber के साथ a.b.c.d संस्करण संख्या को प्रतिस्थापित करता है। हम आम तौर पर पेपर में नियत स्रोत को छोड़कर बिल्डर में चेक किए गए स्रोत के पहले तीन हिस्सों के साथ छोड़ देंगे, और चौथाई शून्य (एफए, आज यह 1.0.2.0) होगा।
अपनी निर्माण प्रक्रिया में, सुनिश्चित करें कि SetVersionNumber कार्य आपके निर्माण कार्य से पहले है। अंत में, हम निर्माण परिणामों को ज़िपित करने के लिए हमारे ज़िप कार्य का उपयोग करते हैं ताकि हमारे पास प्रत्येक स्वचालित निर्माण के लिए बाइनरी का इतिहास हो।