2011-07-27 25 views
6

से अधिक है, तो मैं क्रूज़ कंट्रोल.NET और MSBUILD का उपयोग करके बिल्ड समय को बेहतर बनाने की कोशिश कर रहा हूं, और कमांडलाइन स्विच में से एक, maxcpucount का उपयोग समानांतर में होने की अनुमति देने के लिए किया जा सकता है। हमारे समाधान में 60+ परियोजनाएं हैं इसलिए कोई भी सुधार सहायक होगा।MSBUILD विफल रहता है "प्रक्रिया फ़ाइल XXXXX तक नहीं पहुंच सकती है क्योंकि इसका उपयोग किसी अन्य प्रक्रिया द्वारा किया जा रहा है।" जब maxcpucount 1

"। प्रक्रिया है क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है फ़ाइल xxxx उपयोग नहीं कर सकते MSBuild"

: बहरहाल, जब भी मैं एक ऊपर maxcpucount, हम की वजह से बार-बार निर्माण विफलताओं है ऐसा प्रतीत होता है कि अतिरिक्त समांतर बिल्ड थ्रेड/प्रक्रियाएं एक-दूसरे को लॉक कर रही हैं।

उत्तर

2

क्या आप समाधान फ़ाइल से बना रहे हैं? यदि ऐसा है, तो सुनिश्चित करें कि आप सीधे प्रोजेक्ट-टू-प्रोजेक्ट संदर्भों का उपयोग कर रहे हैं और समाधान की प्रोजेक्ट-निर्भरता सुविधा का उपयोग नहीं कर रहे हैं। यदि आप दोनों का थोड़ा सा उपयोग करते हैं, तो समस्याएं हो सकती हैं। this article देखें।

अभी तक बेहतर है, यदि संभव हो तो समाधान फ़ाइल को हटा दें और अपनी बिल्ड को चलाने के लिए अपनी खुद की एमएसबील्ड फ़ाइल बनाएं।

+1

हाँ, मैं सभी परियोजना संदर्भों के साथ एक समाधान फ़ाइल का निर्माण कर रहा हूँ। – JNappi

0

आपकी असेंबली शायद किसी अन्य असेंबली द्वारा बनाई जा रही है। सुनिश्चित करें कि प्रत्येक असेंबली अन्य असेंबली

3

मुझे लगता है कि मुझे एक समाधान मिला है। ऐसा प्रतीत होता है कि अगर मैं/nodeReuse जोड़ता हूं: झूठी स्विच मुझे फ़ाइल ताले नहीं मिलते हैं। ऐसा लगता है कि nodeReuse कार्यक्षमता msbuild प्रक्रियाओं को चारों ओर रख रही है और वे बाद के निर्माण के लिए लॉक फ़ाइल पर लटक रहे हैं।

http://msdn.microsoft.com/en-us/library/ms164311.aspx

+0

यह वास्तव में काम नहीं किया। कुछ बिल्डों के लिए यह अच्छा लग रहा था लेकिन आखिर में मैंने डीएल के लॉक होने के कारण टूटे हुए बिल्डों के साथ समाप्त कर दिया। – JNappi

+0

क्या आप वाकई एमएसबिल्ड फ़ाइल को लॉक कर रहे हैं? क्या आप प्रक्रिया एक्सप्लोरर या इसी तरह की उपयोगिता के माध्यम से पुष्टि कर सकते हैं? – Mrchief