2011-08-11 36 views
5

सी # निष्पादन योग्य पथ से चलने का सबसे अच्छा तरीका क्या है?सी # निष्पादन योग्य निष्पादन निर्देशिका

मैं अस्थायी फ़ोल्डरों आदि के लिए इसका इस्तेमाल करने की जरूरत है और वर्तमान में मैं उपयोग कर रहा हूँ:

Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) 

लेकिन मैं तो एक करने की ज़रूरत है: के रूप में यह मेरे एक URI प्रकार पथ देता

.Replace("file:\\", string.Empty) 

(यानी फ़ाइल है: \ शुरुआत में) जो मेरे कोड के कुछ अन्य हिस्सों के साथ उपयोग करने योग्य नहीं है।

उत्तर

10

नहीं एक सटीक जवाब देखने के, फिर भी मैं पर एक नजर है करने के लिए सुझाव है:

Path.GetTempFileName() 

http://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename.aspx

+1

मैं कहूंगा कि यह * सटीक उत्तर है। Temp फ़ाइलों को अस्थायी फ़ोल्डर में जाना चाहिए। यही वह है जो इसके लिए है। –

+1

'पथ। गेटटेम्पाथ() 'भी है। – wasatchwizard

23
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) 
+0

यह किसी भी ग # परियोजना भर में निष्पादन के पथ (WinForms, WPF, कंसोल, आदि) और निश्चित रूप से मूल प्रश्न के लिए सबसे अच्छा जवाब पाने के लिए केवल विश्वसनीय तरीका है। लेकिन, इस मामले में यह एप्लिकेशनडेटा में ऐप-विशिष्ट फ़ोल्डर की तरह ध्वनि का उपयोग किया जाना चाहिए। मैं temp निर्देशिका का उपयोग करने से बचना चाहता हूं जब तक कि यह वास्तव में अस्थायी नहीं है (यानी: फ़ाइलों का उपयोग कुछ सेकंड से अधिक या किसी विशिष्ट प्रक्रिया के दौरान नहीं किया जाएगा) .. मैं नियमित रूप से अपने temp फ़ोल्डर को साफ़ करता हूं। – wasatchwizard

+0

आपको "Path.GetDirectoryName()" की आवश्यकता क्यों है, स्थान संपत्ति पहले से ही पूरा पथ प्रदान करती है। –

+1

@ माइकके स्थान में फ़ाइल का नाम शामिल है लेकिन केवल निर्देशिका की आवश्यकता है (इस प्रश्न का शीर्षक देखें) ;-) –

1

प्रयास करें:

Application.StartupPath 

यह निष्पादन योग्य फ़ाइल नाम के बिना पथ लौटना चाहिए।

+1

'एप्लिकेशन। स्टार्टअपपाथ 'केवल WinForms के लिए उपलब्ध है (यानी: System.Windows.Forms असेंबली का संदर्भ देकर)। [लिंक] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath (v = vs.110) .aspx) – wasatchwizard

+0

हां, इसका उल्लेख करना भूल गया, @ वासचविज़ार्ड , आपकी टिप्पणी के लिए +1। – Rolice

3

Environment.CurrentDirectory के साथ प्रयास करें यह आपकी वर्तमान कार्यशील निर्देशिका का फ़ोल्डर देता है।

आप ApplicationData (उपयोगकर्ताओं को रोमिंग के लिए) का उपयोग कर सकते हैं या LocalApplicationData (गैर के लिए:

3

अस्थायी फ़ोल्डरों आदि पर सुरक्षा कारणों से क्रियान्वित निर्देशिका का उपयोग नहीं करना चाहिए के लिए ... एमएस कुछ में निर्मित इस बात के लिए है उपयोगकर्ताओं) या CommonApplicationData (गैर उपयोगकर्ता-संबंधी बातों के लिए) Environment.SpecialFolder से -roaming - कुछ भी (फ़ाइलें + फ़ोल्डर्स) आप उन फ़ोल्डर के अंदर बनाते है पहले से ही आवश्यक अनुमतियों के साथ सेटअप/उपयोगकर्ता के लिए अधिकार चल आप अनुप्रयोग - और (कोई भी नहीं सिवाय शायद व्यवस्थापक) वहां जा सकते हैं ... यह और भी क्या आप वहाँ डाल डेटा एन्क्रिप्ट सकता है सुरक्षित बनाने के लिए ...

अपने प्रश्न का http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

0

स्ट्रिंग executableLocation = Path.GetDirectoryName (() Assembly.GetExecutingAssembly। स्थान); स्ट्रिंग txtfile = पथ। कॉम्बाइन (निष्पादन योग्य स्थान, "example.txt");

1

विधानसभा छाया कॉपी किया गया है तो Assembly.Location dll की छाया प्रतिलिपि को इंगित करेंगे।

आप निर्माण उत्पादन निर्देशिका उपयोग Assembly.CodeBase के स्थान जानना चाहते हैं, यानी .:

Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath) 

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

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