2009-04-17 13 views
24

में सभी असेंबली के संस्करण संख्या को अपडेट करना मुझे विजुअल स्टूडियो में एक बड़ा समाधान मिला है। समाधान में सभी असेंबली के लिए मेजर/माइनर संस्करण संख्याओं को एक बार में अपडेट करने का कोई तरीका है?समाधान

उत्तर

40

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

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

+6

मैं साझा फ़ाइल कॉल करते हैं " SolutionInfo.cs "में कॉपीराइट जैसी चीजों के साथ-साथ एससीएम के लिए एक समाधान आइटम के रूप में सहेजा गया है, जिसमें सभी परियोजनाओं को समान रूप से लिंक किया गया है। – Richard

+0

मैंने अपने मामले में फ़ाइल संस्करणइंफो को बुलाया :) – grover

+0

यह इतना शानदार (और शानदार ढंग से शानदार) है, और सामान्य रूप से खेती करने की इतनी महान आदत है। धन्यवाद। – GregRos

3

खोजें/बदलें?

संस्करण संख्याओं सब (प्रत्येक परियोजना के लिए गुण फ़ोल्डर के अंतर्गत AssemblyInfo.cs) के बाद पाठ फ़ाइलों में संग्रहीत हैं।

+0

काम करेगा कि अगर सभी विधानसभाओं में एक ही प्रमुख/लघु संस्करण पर थे। दुर्भाग्यवश मेरी जगह सभी जगह पर हैं :) – PaulB

+0

क्या आप उन्हें बढ़ाना चाहते हैं, या उन्हें सब एक ही बनाना चाहते हैं? क्योंकि आप उन्हें आसानी से नियमित अभिव्यक्ति का उपयोग कर सकते हैं, भले ही उनके पास अलग-अलग संख्याएं हों। –

+1

यहाँ एक है कि काम करेगा है: \\ [विधानसभा: \ s + AssemblyVersion \\ ("\ d + \ \ d + \ \ d + \ \ d +।।।" \\) \\] –

10

हम एक भी AssemblyInfoCommon.cs जो संस्करण संख्या है, और संदर्भ द्वारा प्रत्येक परियोजना में शामिल किया गया है। अन्य AssemblyInfo.cs फ़ाइलें बनी रहती हैं लेकिन केवल असेंबली-विशिष्ट जानकारी (शीर्षक और विवरण) होती हैं। इसलिए हमारे पास प्रत्येक सी # प्रोजेक्ट के लिए अपडेट करने के लिए केवल एक फ़ाइल है।

7

आप भी अपने वर्गों में से एक में एक सार्वजनिक स्थिरांक स्ट्रिंग, कि बिल्ड नंबर का प्रतिनिधित्व करता है, और विभिन्न परियोजनाओं के लिए अपने सभी AssemblyInfo.cs में इसका इस्तेमाल कर सकते हैं। बेशक यह काम करने के लिए, अन्य सभी परियोजनाओं द्वारा संदर्भित एक परियोजना में होना होगा।

यह एक अच्छा विकल्प है, अगर आप अपने सभी परियोजनाओं में एक ही AssemblyInfo.cs को संदर्भित करने के विचार पसंद नहीं है है।

संपादित करें: नोट! यह तब भी काम करता है जब आप एकाधिक भाषाओं का उपयोग करते हैं (मेरे मामले में एफ # और सी #)।

0

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

"कोर" असेंबली में निरंतर के साथ फ़ाइल Ver.cs है: सार्वजनिक कॉन्स स्ट्रिंग मान = "0.0.0.99";

प्रत्येक समाधान विधानसभा की जानकारी में

देगा: [विधानसभा: AssemblyFileVersion (Ver.Value)]

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