2009-01-10 12 views
20

में बहुत लंबा समय ले रहा है तो सर्वोत्तम प्रथाओं में मेरे पास विजुअल स्टूडियो में मध्यम आकार का समाधान है जो बनाने के लिए लगभग 5 मिनट लगते हैं (यह FxCop और अन्य पोस्ट बिल्ड चरणों के कारण लंबा लगता है)। मेरी समस्या यह है कि, विज़ुअल स्टूडियो इमारत के दौरान प्रतिक्रिया देना बंद कर देता है। आप काम जारी नहीं रख सकते क्योंकि वीएस लगभग लटकता है। मैंने दो वीएस उदाहरणों का उपयोग करने की कोशिश की, बस निर्माण के लिए एक का उपयोग किया, लेकिन यह हर समय और फिर दुर्घटनाग्रस्त रहता है।यदि आपका बिल्ड विजुअल स्टूडियो

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

उत्तर

7

दो उत्कृष्ट MSBuild सुझावों मैं सिर्फ कल सीखा ...

आप/मी का उपयोग करके समानांतर में कार्य चला सकते हैं: n स्विच जहां n प्रोसेसर का उपयोग करने की संख्या है। आपको बस अपने MSBuild कार्य पर BuildInParallel सेट करना है।

अन्य चाल है कि आप कई < कार्यकारी/> चलाने के लिए भी बुला < कार्यकारी आदेश = "नींद 10 सो 20 | | नींद 10" से आप वास्तव में समानांतर में उन्हें चला सकते हैं कार्यों अगर पाइप का उपयोग करके/> प्रत्येक आदेश के बीच चरित्र। एक और अधिक व्यावहारिक उदाहरण:

<CreateItem Include="server1;server2;server3;server2"> 
    <Output ItemName="IISServer" TaskParameter="Include"/> 
</CreateItem> 
<CreateProperty Value="@(IISServer->'iisreset.exe /start %(Identity)', '|')"> 
    <Output TaskParameter="Value" PropertyName="IISServerStartAll" /> 
</CreateProperty> 
<exec command="$(IISServerStartAll)" /> 
+0

यह दिलचस्प है, मुफ्त में अधिक गति की तरह ध्वनि। लेकिन मैं * बिल्कुल * निर्माण के बारे में कुछ नहीं जानता। यदि मैं वीएस में "बिल्ड" शुरू और डिबग कर रहा हूं, तो मुझे यह फ़ाइल कहां मिलती है या यूआई में सेटिंग बदलती है? –

+0

यह एमएसबिल्ड स्क्रिप्ट्स में होगा जो आप स्वयं लिखते हैं।मैं निश्चित रूप से हर बिल्ड से FxCop लेने की सलाह देता हूं, जो अनावश्यक है। आप वीएस में अलग-अलग निर्माण प्रक्रियाएं स्थापित कर सकते हैं। मैं सिर्फ उस पर संकलन करने के लिए सुझाव दूंगा जो आप काम कर रहे हैं और एक जो आपके सभी कोड जांच और परीक्षण चलाता है। – DavGarcia

+0

+1 आप उदाहरण को स्पष्ट करने के लिए [संभावित रूप से इन-लक्षित] प्रॉपर्टी ग्रुप/आइटम ग्रुप सिंटैक्स का उपयोग कर सकते हैं ... इसके अलावा टूल्स | विकल्प प्रोजेक्ट्स एंड सॉल्यूशंस | बिल्ड और रन | समांतर प्रोजेक्ट बिल्ड की अधिकतम संख्या इसे बाहरी रूप से नियंत्रित करती है –

5
  1. आप निश्चित रूप से एक स्थिर कोड विश्लेषण हर बार जब आप अपने समाधान का निर्माण चलाने के लिए जरूरत नहीं है।
  2. द्वारा विलय करने से आपकी परियोजना की संख्या कम करें, कुछ भी मदद कर सकता है।

आपने अन्य पोस्ट बिल्ड कार्यों को कैसे रखा है?

+1

+1 खरीदें, इसके साथ सहमत हैं, आपको क्रूज़ कंट्रोल.नेट के साथ एक बिल्ड सर्वर चलाने पर विचार करना चाहिए जो आपके स्थिर कोड विश्लेषण, यूनिट परीक्षण, कोड कवरेज (नवर), कोडिंग मानकों (स्टाइलकॉप), कक्षा संरचना विश्लेषण चलाएगा (NDepends), आदि ... आप भी चेक इन करने से पहले ऐसा करने के लिए एक बिल्ड स्थापित कर सकते हैं। – DavGarcia

+0

टीमसिटी सेट अप करना वास्तव में आसान है ... –

+0

हम इस कारण से DEBUG मोड में कोई विश्लेषण नहीं चलाते हैं। एक बार जब डेवलपर का मानना ​​है कि वे विकास चक्र के अंत में हैं तो उन्होंने इसे रिलीज मोड में रखा है, जब हम अपना कोड विश्लेषण आदि चलाते हैं – DrGriff

0

आप एमएसबिल्ड का उपयोग कर समर्पित बिल्ड मशीन पर विचार कर सकते हैं। वहां से, आप संकलन करते समय काम करना जारी रख सकेंगे। यह अधिक जटिल बना देता है, हालांकि, आप नेटवर्किंग मुद्दों को पेश कर रहे हैं।

-1

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

+0

समस्या यह नहीं है कि "इसे संकलित करते समय क्या करना है", लेकिन अधिक "कैसे विजुअल स्टूडियो का उपयोग करते समय इसे संकलित करने के लिए, यह देखते हुए कि दो उदाहरण शुरू करने से यह क्रैश हो जाता है "। –

1

यदि आपके पास एक से अधिक कंप्यूटर हैं या इस प्रोग्राम को किसी अन्य मित्र को काम पर सेट अप करते हैं तो इनक्रेडिबिल्ड का उपयोग करें। सेटअप और उपयोग करना आसान है। गति अप संकलन के लिए रैखिक है।

यह भी मल्टीकोर CPU के bacause के लिए अच्छा है सामान्य रूप से बनाम एक परियोजना के लिए एक कोर का उपयोग करता है लेकिन incredibuild यह प्रत्येक .cpp फ़ाइल के लिए समानांतर बनाने के ...

प्रयास करें और देखें .. :)

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