NAnt या MSBuild, किसे चुनना है और कब?


160

मुझे पता है कि स्टैक ओवरफ्लो पर अन्य NAnt और MSBuild संबंधित प्रश्न हैं, लेकिन मैं दोनों के बीच प्रत्यक्ष तुलना नहीं कर पाया और इसलिए यहां सवाल है।

MSBuild पर NAnt कब चुनना चाहिए? कौन सा किसके लिए बेहतर है? क्या NAnt घर / खुले स्रोत परियोजनाओं और कार्य परियोजनाओं के लिए MSBuild के लिए अधिक उपयुक्त है? दोनों में से किसी के साथ क्या अनुभव है?

जवाबों:


97

मैंने इस सप्ताह इसी तरह की जांच की है। यहाँ मैं निर्धारित करने में सक्षम हूँ:

NAnt:

  • क्रॉस-प्लेटफ़ॉर्म (लिनक्स / मोनो का समर्थन करता है)। उदाहरण के लिए, एक वेब साइट को कई लक्ष्यों (यानी, लिनक्स अपाचे और विंडोज आईआईएस) में स्थापित करना आसान हो सकता है।
  • सिंटैक्स में चींटी के समान 95% (वर्तमान चींटी उपयोगकर्ताओं या जावा बिल्डरों को लेने के लिए आसान)
  • निर्माण के भाग के रूप में इकाई परीक्षण चलाने के लिए NUnit के साथ एकीकरण, और उत्पाद प्रलेखन के लिए NDoc के साथ।

MSBuild:

  • .NET में अंतर्निहित।
  • विजुअल स्टूडियो के साथ एकीकृत
  • विज़ुअल स्टूडियो में MSBuild के साथ आरंभ करना आसान है - यह सभी पर्दे के पीछे है। यदि आप गहरा जाना चाहते हैं, तो आप फ़ाइलों को संपादित कर सकते हैं।

विषयगत अंतर: (YMMV)

  • NAnt प्रलेखन थोड़ा अधिक सीधा है। उदाहरण के लिए, MSBuild टास्क संदर्भ सूची "Csc टास्क - Csc कार्य और उसके मापदंडों का वर्णन करता है।" ("मदद" के लिए धन्यवाद?), बनाम NAnt टास्क संदर्भ "csc - संकलन C # प्रोग्राम।" अद्यतन: मैंने देखा है MSBuild प्रलेखन बेहतर हो गया है और अब बहुत बेहतर है (शायद NAnt के साथ सममूल्य पर)।
  • विज़ुअल स्टूडियो के भीतर से सीधे स्क्रिप्ट स्क्रिप्ट (*। * प्रॉजेक्ट फ़ाइल) को संपादित करने का तरीका जानने के लिए आसान नहीं है। NAnt के साथ मेरे पास सिर्फ विजुअल स्टूडियो है। एक स्क्रिप्ट को XML फ़ाइल के रूप में।
  • जाहिरा तौर पर, विज़ुअल स्टूडियो में, वेब एप्लिकेशन प्रोजेक्ट्स को डिफ़ॉल्ट रूप से *। * Proj फ़ाइल नहीं मिलती है, इसलिए मुझे यह पता लगाने में बड़ी कठिनाई हुई कि तैनाती की स्क्रिप्ट बनाने के लिए MSBuild को भी कैसे चलाना है।
  • NAnt विज़ुअल स्टूडियो में बिल्ट-इन नहीं है और इसे ऐड-इन के साथ या "बाहरी टूल" के रूप में जोड़ा जाना चाहिए। यह स्थापित करने के लिए थोड़ा दर्द है।
  • (संपादित करें :) मेरे एक सहकर्मी ने इसे लाया - यदि आप निरंतर एकीकरण के लिए क्रूज़कॉन्ट्रोल का उपयोग करके एक बिल्ड मशीन स्थापित करना चाहते हैं , तो क्रूज़कंट्रोल बॉक्स से बाहर निकेंट के साथ एकीकृत होता है। अद्यतन: क्रूज़कंट्रोल में एक MSBuild कार्य भी है ।
  • कृपया व्यक्तिपरक मतभेदों की पूर्ण और अद्यतित चर्चा के लिए नीचे टिप्पणी देखें।

आप एक .proj फ़ाइल को संपादित कर सकते हैं, लेकिन प्रोजेक्ट को उतारने के बाद (प्रोजेक्ट के लिए संदर्भ मेनू में "अनलोड" विकल्प होना चाहिए)
यॉर्डन पावलोव

18
@Yordan: या अपने कस्टमाइज़ेशन को एक अलग .build फ़ाइल (या जो कुछ भी) में डालें और आयात करें + जो आपकी .csproj फ़ाइल से निष्पादित होती है। तब आपको केवल एक बार .csproj को संपादित करना होगा, और अपने समाधान के लिए .build फ़ाइल को जोड़ सकते हैं। डबल-क्लिक करें और आप किसी अन्य फ़ाइल की तरह संपादन कर रहे हैं। अपने विकल्पों में XML संपादक में फ़ाइलों को .build कर सकते हैं।
केंट बोगार्ट

9
एक MSBuild CCNet कार्य मौजूद है - विवरण इस पर पाया जा सकता है: confluence.public.thoughtworks.org/display/CCNET/MsBuild+Task
गेविन मिलर

2
यह ध्यान देने योग्य है कि आपको .csproj फ़ाइलों को स्वयं संशोधित करने की आवश्यकता नहीं है। आप उन संशोधनों को करने के लिए एक MyProject.csproj.user फ़ाइल का उपयोग कर सकते हैं, अपनी .csproj फ़ाइल को साफ और प्राचीन छोड़ सकते हैं। MSBuild उन .user फ़ाइलों को देखना जानता है और उन्हें स्वचालित रूप से निर्माण प्रक्रिया में आयात करेगा। देखें: ahmed0192.blogspot.com/2006/11/...
CleverPatrick

3
@CleverHuman, कि .user फ़ाइल में आमतौर पर उस परियोजना के लिए उपयोगकर्ता के विशिष्ट मॉड शामिल होते हैं जिन्हें आप सामान्य रूप से प्रोजेक्ट के बाकी हिस्सों के साथ चेकइन नहीं करेंगे? मैंने वर्षों से केंट के सुझाव का उपयोग किया है और यह बहुत अच्छी तरह से काम करता है। आप दूसरी PROJ फाइल को शामिल करने के लिए एक बार PROJ फाइल को मॉड करते हैं, फिर आप प्रोजेक्ट के लिए दूसरी PROJ फाइल जोड़ते हैं। तब से, आप उस अनलोड / पुनः लोड प्रक्रिया से गुजरने के बिना आसानी से उस दूसरी PROJ फ़ाइल को अनुकूलित कर सकते हैं। मैं सिर्फ इस कारण से MSBuild की ओर झुक जाता हूं।
दारिंह

77

मेरे लिए (विंडोज प्लेटफॉर्म पर) MSBuild का एक प्रमुख ड्रा यह है कि यह .NET के हिस्से के रूप में आता है। इसका मतलब है कि जो भी विंडोज मशीन विंडोज अपडेट के साथ अप-टू-डेट है, उसके पास MSBuild उपलब्ध होगा। इस तथ्य को जोड़ें कि C # संकलक भी .NET का ही हिस्सा है और आपके पास एक ऐसा प्लेटफॉर्म है जो स्वच्छ मशीनों पर परियोजनाओं का निर्माण कर सकता है। Visual Studio behemoth को स्थापित करने की आवश्यकता नहीं है। दूसरी ओर NAnt को निर्माण शुरू होने से पहले स्पष्ट रूप से स्थापित किया जाना चाहिए।

सिर्फ रिकॉर्ड के लिए, मैंने अतीत में (उस क्रम में) गैर-तुच्छ बिल्डरों पर NMake, Make, Ant, Rake, NAnt और MSBuild का उपयोग किया है। मेरा पसंदीदा MSBuild है, हाथ नीचे (और मैं इसका पक्ष नहीं लेता क्योंकि "वह है जो विज़ुअल स्टूडियो उपयोग करता है")। IMHO, यह एक बहुत ही कम सराहना की गई उपकरण है।

मैं NAnt बनाम MSBuild प्रक्रियात्मक और कार्यात्मक प्रोग्रामिंग के बीच अंतर की तुलना करेंगे। NAnt काफी सीधा है और आप-क्या-आप देखते हैं। दूसरी ओर MSBuild को थोड़ा और अधिक विचार करने की आवश्यकता है। सीखने की अवस्था स्थिर होती है। लेकिन एक बार जब आप इसे प्राप्त करते हैं, तो आप इसके साथ कुछ आश्चर्यजनक चीजें कर सकते हैं।

इसलिए मैं MSBuild को देखने की सलाह दूंगा यदि आप भी कार्यात्मक या तार्किक शैली प्रोग्रामिंग की ओर बढ़ते हैं - यदि आप मूर्त परिणाम देखने से पहले थोड़ा समय और प्रयास करने के लिए तैयार हैं, तो निश्चित रूप से, मेरा यह भी मानना ​​है कि निवेश अंततः भुगतान करता है और आप अधिक शक्तिशाली चीजें अधिक कुशलता से कर सकते हैं)।


11
वाह! नहीं पता था कि MSBuild रनटाइम के साथ भेज दिया गया था। यह बहुत अच्छा है और मैं निश्चित रूप से वहां लाभ देख सकता हूं। हालाँकि, मैं कार्यात्मक / प्रक्रियात्मक के बीच तुलना को नहीं समझता। यह सुनना दिलचस्प होगा कि MSBuild को इतना शक्तिशाली बनाने के बाद एक बार "क्या होगा"।
स्कॉट साद

2
Msbuild वास्तव में विभिन्न sdks से फाइलों पर निर्भरता की एक संख्या है जो केवल कुछ लक्ष्यों के आह्वान के दौरान स्पष्ट हो जाते हैं। तो हालांकि msbuild बॉक्स से बाहर उपलब्ध है, यह नहीं चल सकता है।
सैम शाइल्स

6
एक चीज़ जिसे जोड़ा जाना चाहिए: न केवल msbuild के भीतर से .NET असेंबली में कॉल करना संभव है, जो बहुत सारे कामों की एक पूरी एक्सेस देता है (जैसे Systme.IO.Path में सब कुछ बिल्ड स्क्रिप्ट में काम आ सकता है) , यह msbuild फ़ाइलों के भीतर सादे C # कोड लिखना भी संभव है और इसे निष्पादित किया गया है। जो सरल है। msdn.microsoft.com/en-us/library/dd722601.aspx और अगर चीजें बहुत जटिल हो जाती हैं, तो कस्टम कार्य लिखना भी एक हवा है।
15

1
विकिपीडिया से: " MSBuild को पहले .NET फ्रेमवर्क के साथ बंडल किया गया था। विज़ुअल स्टूडियो 2013 से शुरू किया गया था, हालांकि, इसे विज़ुअल स्टूडियो के बजाय बंडल किया गया है।"
डेविड आरआर

MSBuild (Microsoft Build Tools 2013) को यहां Visual Studio 2013 में भी स्वतंत्र रूप से डाउनलोड किया जा सकता है
डेविड आरआर

45

व्यक्तिगत रूप से, मैं एक ही परियोजना के लिए दोनों का उपयोग करता हूं।

MSBuild Visual Studio समाधान और परियोजनाओं के निर्माण में बहुत अच्छा है - यही वह है जिसके लिए यह बनाया गया है।

NAnt अधिक आसानी से हाथ-संपादन योग्य है, मेरी राय में - खासकर यदि आप पहले से ही चींटी को जानते हैं। NAnt बहुत आसानी से NAntContrib के साथ MSBuild कॉल कर सकते हैं। इसलिए, मैं निर्मित फ़ाइलों की नकल, सफाई आदि जैसी चीजों को करने के लिए एक NAnt स्क्रिप्ट को हैंड-क्राफ्ट करता हूं - और MSBuild को वास्तविक "मेरी सी # स्रोत कोड को असेंबलियों में बदलने" के लिए कॉल करें।

यदि आप इसका एक उदाहरण चाहते हैं, तो मेरे प्रोटोकॉल बफ़र्स बिल्ड फ़ाइल को देखें । (मैं यह दावा नहीं कर सकता कि यह एक शानदार NAnt स्क्रिप्ट है, लेकिन यह काम करता है।)


1
और यह मोनो का समर्थन करता है। मोनो का MSBuild समर्थन भद्दा है।
मेहरदाद अफश्री

@ मेहरदाद: हां, कुछ बिंदु पर मुझे वास्तव में मोनो पर संकलित करने के लिए प्रोटोकॉल बफ़र्स प्राप्त करने की कोशिश करनी चाहिए ... वर्तमान में एक gmcs बग है जो इसे काम करने से रोकता है :( हमेशा से यह विचार था कि यह अंततः मोनो पर काम करेगा हालांकि
जॉन

1
दोस्तों, मोनो XBuild का उपयोग करता है और MSBuild को XBuild में पोर्ट करना आसान है। इसे देखें: mono-project.com/Porting_MSBuild_Projects_To_XBuild
फयसार

20

NAnt में बॉक्स से अधिक विशेषताएं हैं, लेकिन MSBuild में बहुत बेहतर मौलिक संरचना (आइटम मेटाडेटा चट्टानें) हैं जो पुन: प्रयोज्य MSBuild स्क्रिप्ट बनाने में बहुत आसान बनाती हैं।

MSBuild समझने में थोड़ा समय लेता है, लेकिन एक बार जब आप ऐसा करते हैं तो यह बहुत अच्छा होता है।

सीखने की सामग्री:


38
अरे, मैंने उन किताबों के बारे में सुना है :)
सईद इब्राहिम हाशिमी

19

KISS = उपयोग MSBuild।

जब आपके पास कुछ ऐसा हो, जो बॉक्स से बाहर एक उचित काम करेगा तो मिश्रण में कुछ और क्यों जोड़ें? जब MSBuild पहुंचे, तो NAnt की मृत्यु हो गई। और मोनो में MSBuild कार्यान्वयन, ( xbuild ) होगा।

DRY = MSBuild का उपयोग करें।

अपने आप से पूछें कि आप एक निर्माण प्रणाली से क्या चाहते हैं? मैं एक निर्माण प्रणाली चाहता हूं जो दो अलग-अलग कॉन्फ़िगरेशन को बनाए रखने के बजाय मेरी आईडीई द्वारा उपयोग की जाती है।

व्यक्तिगत रूप से, मैं NAnt के लिए कुछ वास्तविक तर्क सुनना पसंद करूंगा, क्योंकि मैं अभी किसी भी तरह के बारे में नहीं सोच सकता हूं जो वास्तव में पानी को पकड़ता है।


2
"जब एमएसवी का निर्माण किया गया, तो नान्ट की मृत्यु हो गई" - मुझे लगता है कि यह क्लिनिक है, यहां तक ​​कि वीएस के बिना भी (जिसका मैं उपयोग नहीं करता)।
हार्पो

मैं सहमत हूँ। डॉटनेट 1.1 में msbuild.exe नहीं था। तो हम वापस तो खराब हो गए थे। 2.0 के बाद से, msbuild.exe और अतिरिक्त पुस्तकालय बहुत कुछ करते हैं। और एक कस्टम MsBuild- टास्क लिखने में सीखने की अवस्था है, लेकिन मैंने उनमें से 10 वर्षों में लिखा है।
ग्रान्डाकोडर

1
मुझे सहमत होना होगा, आपको डेवलपर के रूप में निर्माण करने के लिए समान टूल का उपयोग करना चाहिए क्योंकि बिल्ड सर्वर आपको तेजी से विफल होने की अनुमति देगा।
क्रिस्टन सम्मान

14

एक बात मैंने देखी कई पोस्टरों का उल्लेख था .csproj (या .vbproj, आदि) फ़ाइलों को संपादित करने के लिए।

MSBuild इनमें से अनुकूलन की अनुमति देता है। * .user फ़ाइलों के उपयोग के माध्यम से फ़ाइलों को proj करें। अगर मैं नाम के एक परियोजना है MyCreativelyNamedProject.csproj और इसके अंदर MSBuild कार्य को अनुकूलित करना चाहते हैं, मैं नाम की एक फ़ाइल बना सकते हैं MyCreativelyNamedProject.csproj.user और प्रयोग CustomBeforeMicrosoftCommonTargets और CustomAfterMicrosoftCommonTargets उन फ़ाइलों को अनुकूलित करने के लिए।

इसके अलावा, NAnt और MSBuild दोनों को कस्टम MSBuild कार्यों के माध्यम से और NantChrib एक्सटेंशन के माध्यम से हृदय की सामग्री के लिए अनुकूलित किया जा सकता है।

तो, NAnt या MSBuild का उपयोग करना वास्तव में परिचितता में आता है:

  • यदि आप चींटी से पहले से परिचित हैं, तो NAnt का उपयोग करें। सीखने की अवस्था बहुत आसान होगी।
  • यदि आप किसी भी उपकरण से परिचित नहीं हैं, तो MSBuild पहले से ही Visual Studio के साथ एकीकृत है और इसके लिए अतिरिक्त उपकरणों की आवश्यकता नहीं है।

यह भी जोड़ने योग्य है कि MSBuild बहुत जल्द ही .NET और विजुअल स्टूडियो के सभी नए संस्करणों के साथ काम करने की गारंटी देता है जैसे ही वे जारी होते हैं, जबकि NAnt में कुछ अंतराल हो सकता है।


1
+1 .net रिलीज़ और नांट रिलीज़ के बीच लैग को इंगित करने के लिए। मुझे याद है जब .net 3.5 बाहर आया था और काम करने वाली चीजों को प्राप्त करने के लिए नेट से हैक किए गए nant.exe.config का उपयोग करना था। मज़ा नहीं।
mmacaulay

9
यहाँ आस-पास के बहुत सारे पोस्ट के अनुसार, .USER फ़ाइलों में + उपयोगकर्ता विशिष्ट जानकारी + होती है, जिसकी जाँच नहीं की जानी चाहिए, ताकि वह अंतिम स्थान हो जहाँ मैं निर्माण अनुकूलन करना चाहता हूँ ... परिभाषा के आधार पर कोई भी निर्माण अनुकूलन उपयोगकर्ता विशिष्ट नहीं हो, और इसलिए उन .user फ़ाइलों में नहीं जाना चाहिए ...
DarinH

1
शराबी से सहमत; .user-files नाम के रूप में जनसंपर्क उपयोगकर्ता का सुझाव है और वे भी अपने स्रोत नियंत्रण भंडार के लिए जाँच नहीं की जानी चाहिए। यह निर्माण को स्वचालित करने का स्थान नहीं है।
केजेटिल क्लासेन

10

मैं दोनों का उपयोग करता हूं जिसमें मेरी NAnt स्क्रिप्ट्स MSBuild कहलाती हैं। NAnt के साथ रहने का मेरा मुख्य कारण अलगाव है । मुझे समझाएं कि मुझे क्यों लगता है कि यह महत्वपूर्ण है:

  1. अपनी परियोजना के लिए निर्भरता जोड़ना। NAnt बिल्ड फ़ाइल विज़ुअल स्टूडियो के लिए विदेशी है (मेरे मामले में मैं इसे एक समर्थक मानता हूं) इसलिए विज़ुअल स्टूडियो इसके साथ कुछ भी करने का प्रयास नहीं करता है। MSBuild कार्य समाधान के हिस्से के रूप में एम्बेडेड हैं और अन्य MSBuild कार्यों को संदर्भित कर सकते हैं। मुझे किसी और से स्रोत कोड प्राप्त हुआ है केवल यह जानने के लिए कि मैं निर्माण नहीं कर सकता, क्योंकि MSBuild सामुदायिक कार्य स्थापित नहीं थे। मुझे विशेष रूप से निराशा होती है कि विजुअल स्टूडियो सिर्फ त्रुटियों का एक समूह नहीं बना और फेंक देगा, जिसने मुझे ढीले समय डिबगिंग बना दिया। यह इस तथ्य के बावजूद कि अनुरोध किया जा रहा है, MSBuild कार्य के अतिरिक्त कुछ हिस्सों के बिना आगे बढ़ सकता है (उदाहरण के लिए डिबग बिल्ड के रूप में)। संक्षेप में: अगर मैं इससे बच सकता हूं तो मुझे अपने प्रोजेक्ट पर निर्भरता जोड़ना पसंद नहीं है

  2. मुझे विजुअल स्टूडियो पर भरोसा नहीं है जहां तक ​​मैं इसकी विकास टीम को फेंक सकता हूं। यह दृश्य स्टूडियो के शुरुआती दिनों में वापस आ जाता है जब यह मेरे HTML को नष्ट कर देगा। मैं अभी भी उदाहरण के लिए डिजाइनर का उपयोग नहीं करता हूं (हाल ही में एक सम्मेलन में मैंने पाया कि सहयोगियों ने ऐसा ही किया था)। मैंने पाया है कि दृश्य स्टूडियो DLL फ़ाइल में निर्भरता और संस्करण संख्याओं को खराब कर सकता है (मैं इसे दोहरा नहीं सकता, लेकिन यह लगातार एक परियोजना में हुआ और बहुत दु: ख और समय खो दिया)। मैंने एक बिल्ड प्रक्रिया का सहारा लिया है जो केवल डीबग मोड में बनाने के लिए Visual Studio का उपयोग करता है। उत्पादन के लिए, मैं NAnt का उपयोग करता हूं ताकि मैं बाहरी रूप से सब कुछ नियंत्रित करूं । यदि मैं NAnt का उपयोग कर बनाता हूं तो विजुअल स्टूडियो किसी भी समय हस्तक्षेप नहीं कर सकता है।

PS: मैं एक वेब डेवलपर हूं और विंडोज फॉर्म का विकास नहीं करता।


6

हालांकि मैं MsBuild से बहुत परिचित नहीं हूं, मैं इस धारणा के तहत हूं कि दोनों पक्षों में कुछ महत्वपूर्ण अंतर जोड़कर पूरक हो सकते हैं:

मुझे हाल ही में नांट में सिल्वरलाइट प्रोजेक्ट बनाना था। मुझे पता चला कि अगर मैं सिर्फ MsBuild के साथ ऐसा करता हूं तो जीवन आसान हो जाएगा - मैंने एक Nant स्क्रिप्ट के भीतर से MsBuild कार्य को कॉल करना समाप्त कर दिया है, इसलिए मुझे लगता है कि यह दोनों को मिलाने और मिलाने के लिए साधारण से बाहर नहीं है।

इसके अलावा, मुझे लगता है कि यह व्यक्तिगत पसंद का सवाल होने जा रहा है - जाहिर है कि आप विजुअल स्टूडियो के भीतर से MsBuild की कार्यक्षमता में से कुछ को प्रबंधित कर सकते हैं, अगर यह आपकी बात है। यदि आप स्क्रिप्ट को हाथ से लिखना पसंद करते हैं, तो नैन्ट अधिक लचीला और बेहतर लगता है, और यदि आप जावा दुनिया से आते हैं, तो संभवतः आप इसके साथ घर पर सही होंगे।


अच्छी बात। दोनों समाधानों को आसानी से बढ़ाया जा सकता है और किसी भी तरह से अनुकूलित किया जा सकता है।
क्लीवरपैट्रिक

2

मैंने दोनों का उपयोग करके समाप्त किया। जब हमारी निर्माण प्रणाली को फिर से डिज़ाइन किया गया, तो मैं एक मुश्किल समस्या का सामना कर रहा था। अर्थात्, मैं .proproj (और परिवार) से छुटकारा नहीं पा सका क्योंकि हम हर कोई प्रोजेक्ट फ़ाइलों, सेटिंग्स और कॉन्फ़िगरेशन को अपडेट करने के लिए VS का उपयोग कर रहा था। इसलिए एक विशाल दोहराव और त्रुटि प्रवण प्रक्रिया के बिना, हम फ़ाइलों के एक नए सेट पर अपने निर्माण प्रणाली को आधार नहीं बना सकते।

इस कारण से, मैंने वीएस की 'प्रेज' फाइलों को रखने और MSBuild का उपयोग करने का निर्णय लिया (वे MSBuild फाइलें हैं, कम से कम VS2005 और VS2008 MSBuild प्रोजेक्ट फाइलों का उपयोग करें)। बाकी सब के लिए (कस्टम कॉन्फ़िगरेशन, यूनिट परीक्षण, पैकेजिंग, प्रलेखन तैयार करना ...) मैंने NAnt का उपयोग किया।

निरंतर एकीकरण के लिए, मैंने क्रूज़कंट्रोल का उपयोग किया। तो हमारे पास CC स्क्रिप्ट थी जो NAnt नौकरियों को ट्रिगर करती थी, जो कि MSBuild के निर्माण के लिए थी।

एक अंतिम नोट: MSBuild सेटअप परियोजनाओं का समर्थन नहीं करता है! तो आप DevEnv.com पर कॉल करने या सीधे विजुअल स्टूडियो का उपयोग करने पर अड़े हुए हैं। यही कारण है कि मैंने ऐसा करना समाप्त कर दिया है, लेकिन मैंने सेटअप प्रोजेक्ट को सभी समाधान कॉन्फ़िगरेशन से डिफ़ॉल्ट रूप से अक्षम कर दिया है, क्योंकि डेवलपर्स को सामान्य रूप से उन्हें बनाने की आवश्यकता नहीं होगी, और यदि वे करते हैं, तो वे मैन्युअल रूप से उन्हें बनाने का चयन कर सकते हैं।


1

मैंने हाल ही में NAnt से MSBuild में स्विच किया है क्योंकि इसकी VS समाधान बनाने की क्षमता है। मैं अभी भी कभी-कभी NAnt का उपयोग करता हूं।

आप MSBuild कम्यूनिटी टास्क भी देख सकते हैं जो NAntContrib की तरह है।


वीएस समाधान के कुछ संस्करण एनएएनटी द्वारा समर्थित हैं। nant.sourceforge.net/release/0.85/help/tasks/solution.html
डेनिस स्किडमोर

1

NAnt के लिए उपलब्ध प्रलेखन और ट्यूटोरियल ने NAnt के साथ स्क्रिप्ट बनाना सीखना शुरू करना आसान बना दिया है। एक बार जब मुझे NAnt की फांसी मिल गई और मैंने स्क्रिप्ट बनाने के लिए MSBuild को ज्ञान देना शुरू कर दिया (मैंने NAnt में X किया, मैं MSBuild में X कैसे करूं?)। Microsoft का दस्तावेज़ आमतौर पर उपयोगी होने से पहले ज्ञान का एक उच्च स्तर मानता है।

NAnt से MSBuild में स्विच करने का कारण यह है क्योंकि MSBuild अधिक चालू है। दुर्भाग्य से NAnt की अंतिम रिलीज़ 8 दिसंबर 2007 में हुई थी, जबकि MSBuild 4.0 (.NET 4.0) दूर नहीं है। ऐसा लग रहा है कि NAnt परियोजना की मृत्यु हो गई है।

अगर आपको MSBuild का उपयोग करके स्क्रिप्ट बनाने की शुरुआत करने के लिए किसी के लिए अच्छे दस्तावेज़ मिलें, तो NAnt को छोड़ दें और सीधे MSBuild के लिए जाएं। अगर NAnt कभी एक नई रिलीज के साथ आता है तो मैं NAnt के साथ चिपके रहने पर विचार करूंगा, लेकिन वे अब पीछे हैं।


1
जून 2012 तक, NAnt का संस्करण 0.92 वेबसाइट से उपलब्ध है: nant.sourceforge.net और यह .Net 4.0 का समर्थन करता है।
ब्रेट रिग्बी

0

हम दोनों का उपयोग करते हैं। NAnt सभी "स्क्रिप्टिंग" सामानों के लिए ज़िम्मेदार है, जैसे नकल करना, IIS पर तैनात करना, पैकेज बनाना और MSBuild समाधान के निर्माण के लिए ज़िम्मेदार है। फिर हम NAnt के नए संस्करण द्वारा गैर-समर्थित .NET 4.0 के साथ समस्याओं से बच सकते हैं।

NAnt भी अधिक स्केलेबल है। यदि हम परिनियोजन स्क्रिप्ट को उत्पादन सर्वर पर माइग्रेट करना चाहते हैं, तो हम केवल बिल्ड फ़ाइल की प्रतिलिपि बनाते हैं और .NET का एक उचित संस्करण स्थापित करते हैं - csproj फ़ाइलों के साथ कोई विज़ुअल स्टूडियो समस्याएं नहीं :)


0

YDeliver by Manoj एक बिल्ड फ्रेमवर्क है जो PSake के ऊपर बनाया गया है। इसमें लाइब्रेरी फ़ंक्शंस, वर्कफ़्लोज़ को परिभाषित करने की क्षमता का एक समृद्ध सेट है, और हमने इसका उपयोग उत्पादन के लिए छह उद्यम परियोजनाओं को वितरित करने के लिए किया है।

इसे TeamCity , CruiseControl , या ऐसी किसी भी चीज़ के साथ प्रयोग करें जो PowerShell चला सकती है ।


0

हम FlubuCore का उपयोग करते हैं। यह परियोजनाओं के निर्माण और C # कोड का उपयोग करके परिनियोजन स्क्रिप्ट निष्पादित करने के लिए एक खुला स्रोत C # लाइब्रेरी है।

कैसे flubu उपयोग किया जाता है इसका सरल उदाहरण:

protected override void ConfigureTargets(ITaskContext session)
{           

    var compile = session.CreateTarget("compile")
        .SetDescription("Compiles the solution.")
        .AddTask(x => x.CompileSolutionTask())
        .DependsOn("generate.commonassinfo");
}

आप flubu और यहाँ शुरू करने के तरीके के बारे में अधिक जानकारी प्राप्त कर सकते हैं: पसंद-के लिए निर्माण- उपकरण- msbuild-nant-or-something-else

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.