2009-06-10 14 views
18

मेरे पास क्रूज़ कंट्रोल का उपयोग कर एक स्वचालित निर्माण प्रणाली है। मैं उपयोग करने के लिए संस्करण स्ट्रिंग प्राप्त करने के लिए SvnRevisionLabeller का उपयोग कर रहा हूँ। इस स्ट्रिंग के साथ मैं assemblyInfo.cs को अद्यतन करने के लिए नेंट का उपयोग कर सकता हूं, इसलिए जब मैं इसे बनाता हूं तो सही बिल्ड स्ट्रिंग है। मैं subversion भंडार टैग करने के लिए इस सीसी लेबल का भी उपयोग कर सकते हैं।क्या विधानसभाInfo.cs को संस्करण नियंत्रण में रखा जाना चाहिए?

तो सब कुछ गठबंधन है
- CCNet लेबल बिल्ड
- निष्पादन योग्य (विधानसभा सूचना)
- संस्करण नियंत्रण (subverson टैग)

अब जहां मैं एक समस्या है अगर मैं एक के पुनर्निर्माण के लिए कोशिश करना चाहते है भंडार से पुरानी छवि। चूंकि AssemblyInfo.cs संस्करण नियंत्रण में नहीं है बल्कि एक जेनरेट की गई फ़ाइल है, जब मैं अब निर्माण करने का प्रयास करता हूं, तो संस्करण की जानकारी वही नहीं होगी जब रिपोजिटरी का यह संस्करण क्रूज़ कंट्रोल का उपयोग करके बनाया गया था। मैं बिल्कुल उसी छवि को उत्पन्न करने में सक्षम होना चाहूंगा चाहे वह सीसी बिल्ड के दौरान बनाया गया हो या बाद में दिनांक से सबवर्सन से जांच कर रहा हो।

मुझे पता है कि यह अक्सर सलाह नहीं दी जाती है, लेकिन मैं चेक-इन चाहिए AssemblyInfo.cs फ़ाइल प्रत्येक निर्माण के बाद तो यह है कि जब मैं एक SVN चेक-आउट के सही संस्करण जानकारी से बाद में निर्माण इस्तेमाल किया जाएगा?

धन्यवाद, लियाम

उत्तर

2

मैं हमेशा यह में जाँच की है। वास्तव में मेरा मानना ​​है कि इस टीम सिस्टम स्रोत नियंत्रण के साथ डिफ़ॉल्ट व्यवहार है।

+0

मैं सबवर्सन और CrusieControl.NET उपयोग कर रहा हूँ। मैं एक NANT स्क्रिप्ट का उपयोग कर निर्माण। मैंने जो कुछ पढ़ा है वह है कि AssemblyInfo.cs बिल्ड प्रक्रिया के दौरान उत्पन्न एक आउटपुट है।तो निर्माण अनुक्रम है: - CCNET (SVN उत्प्रेरक द्वारा एक चेक-इन @say भंडार संस्करण 100) NAnt बुलाया MSBuild AssemblyInfo.cs कहा जाता है का निर्माण अब मैं चेक-इन AssemblyInfo.cs करें afgter बनाई गई है ? यदि रिपॉजिटरी में चेक-इन किया जाएगा तो रेव 101 पर होगा। इसलिए निर्माण संशोधन से मेल खाने वाले AssemblyInfo.cs का मेरा लक्ष्य पूरा नहीं हुआ है। मैं यह कैसे करु? –

+0

मुझे विश्वास है कि आप अपने मामले में AssemblyInfo.cs में जांच नहीं करना चाहते हैं क्योंकि आपका सीआई सिस्टम इसे उत्पन्न कर रहा है। एक सामान्य निर्माण के साथ जिस तरह से टीएफएस बिल्ड सर्वर इसे करते हैं, विधानसभाInfo.cs चेक इन हो जाता है और प्रत्येक बिल्ड के लिए जेनरेट नहीं होता है। – majinnaibu

7

या तो संस्करण विधानसभाInfo.cs बिल्कुल नहीं है, या उनमें से "डेवलपर संस्करण" को रिपोजिटरी में डालें और क्रूज़ कंट्रोल.Net svn-build के बाद उन्हें वापस लाएं (मैं बाद में करता हूं ताकि डेवलपर्स वर्कस्टेशन पर बनाया गया हो CruiseControl.Net से डाउनलोड किए गए "आधिकारिक" से आसानी से बुझाने योग्य)।

बाद में एक ही निर्माण लेबल प्रजनन के लिए के रूप में - आप पहले से ही हाथ से MSBuild/NAnt फोन करके पुनर्निर्माण करना है, बस पारित करने के लिए यह उचित मान पर सेट CCNetLabel और आप के साथ के रूप में उत्पन्न एक ही विधानसभा संस्करणों मिल जाएगा CruiseControl.Net से शुरू किया गया निर्माण (एमएसबिल्ड: /p:CCNetLabel=1.4.2.333, NANT: -D:CCNetLabel=1.4.2.333)।

7

मैं जो मैं हर परियोजना में एक लिंक जोड़ एक CommonAssemblyInfo.cs फ़ाइल का उपयोग करें।

केवल विशेषता इस फ़ाइल में मेरे पास है AssemblyFileVersion है और CC.Net/MSBuild संस्करण को अद्यतन हर निर्माण की है।

यकीन है कि किसी भी परियोजना है कि CommonAssemblyInfo.cs शामिल AssemblyInfo.cs में डुप्लिकेट गुण नहीं है सुनिश्चित करें।

आप CC.Net स्रोत कोड आपको लगता है कि देखेंगे की जाँच तो है कि वे किस तरह वे कर रहे हैं कॉन्फ़िगर किया गया निर्माण किया है।

0

हम एक MSBuild स्क्रिप्ट है कि सभी की जरूरत AssemblyInfo.cs उत्पन्न करता है निर्माण करने से पहले फाइल की है। इस तरह मैं असेंबली संस्करणों में एसवीएन संशोधन संख्या का भी उपयोग कर सकता हूं। AssemblyInfo.cs फ़ाइलों को एसवीएन में चेक नहीं किया जाता है (उन्हें अनदेखा किया जाता है ताकि वे लोगों को परेशान न करें) लेकिन इमारत से पहले उत्पन्न हुआ (इससे कोई फर्क नहीं पड़ता कि यह एक स्वचालित बिल्ड स्क्रिप्ट या वीएस से है)।

मैं भी इतना है कि डेवलपर्स के विवरण के साथ परेशान करने के लिए की जरूरत नहीं है AssemblyInfo.cs फ़ाइलें पीढ़ी की देखभाल करने के लिए एक बैच फ़ाइल की आपूर्ति।

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