मेरे स्थितिकैसे कम करने के लिए MSBuild बार
सी # परियोजना मैं अब हम पर काम कर रहा हूँ में एक काफी बड़ा समाधान (80 + परियोजनाओं) है। अब 5 मिनट के समय का पुनर्निर्माण + Visual Studio 2008 से एमएसबिल्ड का उपयोग करके वास्तव में काफी समस्या हो रही है।
एक विश्लेषण मैं था पिछले हफ्ते यह पता चला कि अपने निर्माण के समय इस प्रकार खर्च किया गया था में: परियोजनाओं के लिए
प्रतिलिपि बनाई जा रही फ़ाइलें और परियोजनाओं है कि यह इस पर निर्भर (CopyToLocal), आदि के लिए यह recopying (60%)
एक पोस्टबिल्ड को डिकंपाइल/संकलन के लिए आमंत्रित करना। (20%)
वास्तविक संकलन, आदि (20%)
bin\debug
फ़ोल्डरों उत्पादन भी एक बाहरी निर्देशिका में प्रतिलिपि है मुख्य 'स्थापित करने के लिए से
अलावा कर लोडर कार्यक्रम।
कॉपी:
\loader\bin\loader.exe \loader\plugin\plugin1\plugin1.dll \loader\plugin\plugin1\somedependency.dll
मैं
क्या बातें जाने के प्रयास में एक छोटे से तेजी से मैं निम्नलिखित के बारे में सोचा: मुख्य कार्यक्रम संरचना इस तरह एक सा है सभी फाइलें एक बड़ी बिन निर्देशिका में हैं और कॉपीटोलोकल का उपयोग न करें। मुझे यह पसंद नहीं है क्योंकि हम अब एक ही डीएलएल फाइलों के विभिन्न संस्करणों का उपयोग नहीं कर सकते हैं और मेरी बिन निर्देशिका काफी गड़बड़ हो रही है।
Use parallelism (/m) for MSBuild। यह निर्माण के समय में केवल बहुत ही कम मदद करता है।
उन परियोजनाओं के बीच निर्भरताओं को कम करने का प्रयास करें जो हमेशा एक अच्छी बात है।
हार्डवेयर में निवेश करें। मुझे कुछ research on solid-state drives मिला, लेकिन यह आशाजनक प्रतीत नहीं होता है।
मेरा प्रश्न
मैंने यह भी देखा है कि जब मैं एक परियोजना मेरी निर्भरता पेड़ सब कुछ फिर से बनाना हो जाता है की जड़ में है कि में बदलाव करते हैं। भले ही परिवर्तन केवल 'निजी' भाग में था और परियोजना का इंटरफ़ेस नहीं बदला था।
क्या MSBuild निर्भर परियोजनाओं का एक टाइमस्टैम्प का उपयोग यह निर्धारित करने के लिए करता है कि किसी परियोजना को पुनर्निर्माण की आवश्यकता है या नहीं?
क्या यह एक अलग स्थिति में बदला जा सकता है? उदाहरण के लिए, फ़ाइल का चेकसम?
इस विशिष्ट सुझाव के अलावा मैं निश्चित रूप से निर्माण के समय को तेज बनाने के लिए सभी सुझावों की सराहना करता हूं।
[सीआई बिल्ड समय (.NET) में सुधार करने के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/8633313/improving-ci-build-time-net) –