मैं .NET अनुप्रयोगों के काफी बड़े पोर्टफोलियो को बनाए रखने के साथ शामिल हूं। इसके अलावा पोर्टफोलियो में अन्य प्लेटफार्मों के शीर्ष पर निर्मित विरासत अनुप्रयोग हैं - देशी सी ++, ईसीएलआईपीएस फॉर्म, आदि।
मेरे पास अभी NAnt के शीर्ष पर एक जटिल बिल्ड ढांचा है जो इन सभी अनुप्रयोगों के लिए बिल्ड का प्रबंधन करता है। बिल्ड फ्रेमवर्क विभिन्न चीजों को करने के लिए NAnt का उपयोग करता है:
- तोड़फोड़ से बाहर कोड खींचो, साथ ही तोड़फोड़ में टैग बनाएँ
- अन्य प्लेटफार्मों के लिए .NET या अन्य संकलक के लिए MSBuild का उपयोग करके कोड का निर्माण करें
- विधानसभा संख्याओं के अंदर झांकना संस्करण संख्या बढ़ाने के लिए फाइल
- ऐसी कुछ फ़ाइलों को हटा दें जिन्हें बिल्ड / रिलीज़ में शामिल नहीं किया जाना चाहिए
- फ़ोल्डर परिनियोजन के लिए कोड जारी करता है
- ज़िप कोड बैकअप प्रयोजनों के लिए
- विंडोज सेवाओं की तैनाती; शुरू करो और उन्हें रोको
- आदि।
उन चीजों में से अधिकांश को केवल NAnt के साथ ही किया जा सकता है, लेकिन हमने NAnt के लिए कुछ ऐसे विस्तार कार्यों का निर्माण किया, जो हमारे पर्यावरण के लिए विशिष्ट थे। इसके अलावा, ऊपर दी गई अधिकांश प्रक्रियाएं हमारे विभिन्न एप्लिकेशन स्क्रिप्ट्स के निर्माण में बहुत सी जेनरिक और पुन: उपयोग की जाती हैं, ताकि हम तर्क न दोहराएं। इसलिए यह सरल NAnt कोड नहीं है, और सरल बिल्ड स्क्रिप्ट नहीं है। दर्जनों NAnt फाइलें हैं जो एक बिल्ड को निष्पादित करने के लिए एक साथ आती हैं।
हाल ही में मैं कुछ कारणों से NAnt से असंतुष्ट था: (1) यह वाक्यविन्यास सिर्फ भयानक है - XML के शीर्ष पर प्रोग्रामिंग भाषाएं वास्तव में बनाए रखने के लिए भयानक हैं, (2) परियोजना को बेल पर मर गया लगता है; वहाँ हाल ही में अद्यतन का एक टन नहीं किया गया है और ऐसा लगता है जैसे कोई भी वास्तव में पतवार पर नहीं है। .NET 4 के साथ काम करने की कोशिश करने से गतिविधि की कमी के कारण कुछ दर्द बिंदु हो सकते हैं।
तो, उस पृष्ठभूमि के सभी के साथ, यहाँ मेरा सवाल है। कुछ चीजें जिन्हें मैं ऊपर दी गई सूची के आधार पर पूरा करना चाहता हूं, और यह देखते हुए कि मैं मुख्य रूप से एक .NET शॉप में हूं, लेकिन मुझे गैर- .NET प्रोजेक्ट्स बनाने की आवश्यकता है, क्या NAnt का एक विकल्प है जिसे मुझे विचार करना चाहिए इसमें स्विच हो रहा है?
मेरी रडार पर चीजें शामिल Powershell (के साथ या बिना psake ), MSBuild ही है, और द्वारा रेक । इन सभी के पक्ष और विपक्ष हैं। उदाहरण के लिए, क्या MSBuild पर्याप्त शक्तिशाली है? मुझे याद है कि वर्षों पहले इसका उपयोग किया था और यह NAnt जितनी शक्ति नहीं थी। क्या मैं सच में चाहता हूं कि मेरी टीम रूबी को सिर्फ रेक का इस्तेमाल करने के लिए सीखे। क्या वास्तव में मेरे पोर्टफोलियो को पिन करने के लिए psake एक प्रोजेक्ट के लिए पर्याप्त परिपक्व है? क्या पॉवर्सहेल "धातु के बहुत करीब है" और मैं इसे बनाने के लिए अपनी खुद की लाइब्रेरी का उपयोग करने के लिए इसे लिखने के लिए समाप्त करूंगा?
क्या अन्य उपकरण हैं जिन पर मुझे विचार करना चाहिए? यदि आप महत्वपूर्ण जटिलता के एक .NET पोर्टफोलियो को बनाए रखने के साथ शामिल थे, तो आप किस टूल का निर्माण कर रहे हैं? वर्तमान में आपकी टीम क्या उपयोग करती है?