मेरे पास एक एमएसबिल्ड कार्य है जो xcopy को कॉल (अन्य चीजों के साथ) निष्पादित करता है। मुझे जो मिला है वह यह है कि जब मैं अपने एमएसबिल्ड कार्य को बैच फ़ाइल से चलाता हूं तो एक्सकॉपी को यह कॉल सही तरीके से निष्पादित करता है, और किसी आउटपुट को निष्पादित या उत्पन्न करने में विफल रहता है जो मुझे किसी भी विचार को अनुमति देता है कि उसी बैच फ़ाइल को दूसरे से क्या कहा जा रहा है एक सिस्टम के साथ सी # अनुप्रयोग। डायग्नोस्टिक्स.प्रोसेस।सिस्टम.डिग्नोस्टिक्स.प्रोसेस का उपयोग वास्तव में क्या करता है?
दोनों प्रक्रियाओं और अधिक या कम एक ही संरचना के साथ शुरू कर रहे हैं:
waitProc.StartInfo.Arguments = "/C [executable]";
waitProc.StartInfo.FileName = "cmd.exe";
waitProc.StartInfo.UseShellExecute = false;
इसके अलावा Xcopy आदेश पर को असत्य से सत्य "UseShellExecute" को बदल कर मैं इस दोनों उपयोग के मामलों में सफल होने के लिए कर सकते हैं, फिर भी आदेश तीसरे उपयोग के मामले में चलाने में विफल रहता है। तीसरा उपयोग मामला हमारी स्वचालित बिल्ड सिस्टम है जो एक विंडोज़ सेवा है जिसे सीधे एमएसबिल्ड कहते हैं। हमारी बिल्ड मशीन पर विफलता के मामले में कॉपी कमांड अनिश्चित काल तक लटका हुआ है, मुझे विश्वास है, क्योंकि System.Diagnostics.Process एक विंडो प्रदर्शित करने का प्रयास करता है, और सेवाओं के पास उनके साथ जुड़े विंडोज डेस्कटॉप सत्र नहीं होते हैं, इसलिए वे नहीं कर सकते खिड़कियां प्रदर्शित करें।
मैंने "CreateNoWindow" प्रॉपर्टी का उपयोग करने का प्रयास किया है, और मैंने "विंडो स्टाइल" को "ProcessWindowStyle.Hidden" पर सेट करने का प्रयास किया है, लेकिन यह बिल्ड मशीन पर व्यवहार को नहीं बदलता है।
यह सब कहा, मैं वास्तव में जानना चाहता हूं कि वास्तव में UseShellExecute प्रॉपर्टी क्या करती है, क्योंकि ऐसा लगता है कि एमएसडीएन दस्तावेज के मुकाबले यह बहुत कुछ है।
धन्यवाद।
हाय क्रिस, क्या आपने कभी इसके साथ आगे बढ़े? मुझे एक समान स्थिति का सामना करना पड़ रहा है: http://stackoverflow.com/questions/7085185/msbuild-buildinparallel-custom-task-spawning-process-that-fails-to-run –