2011-10-17 7 views
5

अगर मैं इस आदेश के बीच अलग है क्या निष्पादन योग्य स्थान प्राप्त करना चाहते हैं के बीच अलग:निष्पादन योग्य स्थान

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

Directory.GetCurrentDirectory(); 

System.Environment.CurrentDirectory; 

है किसी भी प्रकार भिन्न है? यह अलग जगह के लिए इंगित किया गया है?

उत्तर

5

Assembly.GetExecutingAssembly()। स्थान

क्रियान्वित विधानसभा के स्थान हो जाता है। एएसपी.NET एप्लिकेशन में यह सिस्टम फ़ोल्डर में छाया प्रतिलिपि असेंबली के कारण भिन्न हो सकता है। वर्तमान में निष्पादित असेंबली का स्थान होस्टिंग प्रक्रिया के स्थान से भिन्न हो सकता है।

निर्देशिका। GetCurrentDirectory();

होस्टिंग प्रक्रिया की वर्तमान कार्य निर्देशिका प्राप्त करता है। ज्यादातर मामलों में यह निर्देशिका होगी जहां निष्पादन योग्य स्थित है लेकिन यह कार्य निर्देशिका SetCurrentDirectory विधि का उपयोग करके प्रोग्रामेटिक रूप से संशोधित की जा सकती है।

सिस्टम। पर्यावरण। वर्तमान निर्देशिका;

निर्देशिका जिसमें से होस्टिंग प्रक्रिया शुरू की गई थी।


जहां एक ही फ़ोल्डर 3 में सब कुछ एक ही वापस कर सकती है है एक डेस्कटॉप अनुप्रयोग में।

+1

"शायद वापसी होगी वही "गलत है, आप उस पर भरोसा नहीं कर सकते। कार्य निर्देशिका ("वर्तमान dir") शॉर्टकट गुणों में सेट की जा सकती है, या आप प्रोग्राम को कमांड लाइन से किसी भिन्न निर्देशिका से चला सकते हैं। – matejcik

+0

@matejcik, यही कारण है कि मैंने कहा 'होगा' और हमेशा नहीं होगा। हालांकि मुझे एक अलग शब्द का इस्तेमाल करना चाहिए था: 'शायद'। –

2
  1. Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) निर्दिष्ट विधानसभा के एक फ़ोल्डर देता है।

  2. Directory.GetCurrentDirectory()MSDN के अनुसार,प्रणाली वर्तमान निर्देशिका हो जाता है बैकस्लैश के बिना। Directory.GetCurrentDirectory()

  3. System.Environment.CurrentDirectory या सेट प्रणाली वर्तमान निर्देशिका हो जाता है।

2

वर्तमान निर्देशिका कार्यरत निर्देशिका है, यह आवश्यक नहीं है कि आपकी असेंबली वाली निर्देशिका के समान ही हो।

उदाहरण के लिए, यदि आप कमांड लाइन पर थे, जड़ C: \ ड्राइव और किया कमांड "somefolder \ MyProgram.exe" वर्तमान निर्देशिका अभी भी सी होगा: \

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