2010-03-09 13 views
5


सक्षम करने के लिए विजुअल स्टूडियो में बिल्ड नंबरों को कॉन्फ़िगर कैसे करें मैं विजुअल स्टूडियो 2008 में सी # समाधान बना रहा हूं जिसमें कई परियोजनाएं और परियोजना निर्भरताएं हैं।
मैं केवल डीएलएल संस्करण संख्याओं को बदलने का एक तरीका ढूंढ रहा हूं जब प्रोजेक्ट बनाता है कोड बदलता है।

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

क्या कोई तरीका है कि मैं विजुअल स्टूडियो को केवल परिवर्तित फ़ाइल सामग्री के आधार पर बिल्ड नंबर को बढ़ाने के लिए कॉन्फ़िगर कर सकता हूं? क्या इसमें कोई ऐड होगा?

ऐसा लगता है कि इन फ़ाइलों की बाइनरी तुलना डीएलएस के भीतर विभिन्न संस्करण संख्याओं के कारण भी विफल हो जाएगी। क्या किसी को बेहतर उपकरण की जानकारी है केवल डीएलएस की सामग्री की तुलना करें?

अग्रिम धन्यवाद।डीएल तुलना

उत्तर

1

एक विकल्प एक निरंतर एकीकरण समाधान जैसे Cruise Control .Net पर जाने के लिए है, यह स्रोत नियंत्रण प्रणाली में चेक इन पर ट्रिगर करने की अनुमति देता है।

विधानसभा संस्करण क्या मैं आमतौर पर करते हैं एक भी SolutionVersion.cs बनाने (डिफ़ॉल्ट विधानसभा संस्करण सीएस को बदलने के लिए) है कि प्रत्येक परियोजना से जुड़ा हुआ है (ऐड मौजूदा आइटम का उपयोग लेकिन बटन बदलने कड़ी के रूप में जोड़ने के लिए) के बारे में

तो मैं पहले समाधान का निर्माण हो जाता है

इस तरह मैं एक विधानसभा लेने के लिए और वापस के माध्यम से यह पता लगाने कोड कर सकते हैं संख्या संस्करण क्रूज नियंत्रण निर्माण लेबल नंबर लेने के लिए और SolutionVersion.cs अधिलेखित करने के लिए एक NAnt या MSBuild कार्य का उपयोग क्रूज़ कंट्रोल बिल्ड संस्करण (यहां तक ​​कि बेहतर मैं आमतौर पर स्रोत नियंत्रण में उसी संख्या के साथ स्रोत लेबल करने के लिए CC.net प्राप्त करता हूं)

सीसीनेट के लिए
+0

+1। असेंबली संस्करणों के लिए, हम उपवर्तन संशोधन संख्या का उपयोग करते हैं।इंस्टॉलरों के लिए, हमारे पास सीसीनेट परियोजनाएं हैं जिनके लिए बल निर्माण की आवश्यकता होती है, इसलिए इंस्टॉलर को सीसीनेट बिल्ड नंबर के आधार पर संस्करणित किया जाता है। – Pedro

+0

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

+0

मैं केवल अद्यतन डीएलएस की आंशिक तैनाती की आवश्यकता को छोड़ रहा हूं, नए निर्माण से सभी डीएलएस को तैनात करना ठीक है, और सभी ने बिल्ड नंबर के आधार पर संस्करण संख्या अपडेट की होगी। http://www.jetbrains.com/teamcity/ अब मेरा चयन सर्वर है, आपका भी हो सकता है। – jaminto

0

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

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

0

इस codeproject article में एक दिलचस्प नमूना है जो आप की जांच करनी चाहिए नहीं है ... यह एक prebuild कार्य जो

0

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

मैं Embedding mercurial revision information in Visual Studio c# projects automatically में अपने सिस्टम का वर्णन करता हूं। जबकि मेरा समाधान शायद आपके लिए सही नहीं है, मेरे प्रश्न के जवाब में अन्य दिलचस्प विकल्प सुझाए गए थे, इसलिए मैंने जो समाधानों को खारिज कर दिया है, वे आपके लिए उपयोगी हो सकते हैं, भले ही आपको उन्हें जो भी वीसीएस में अनुकूलित करना है, उपयोग।