मैं बिन पथ कैसे प्राप्त करूं?


80

मुझे अमल करने वाले विधानसभा के बिन रास्ते की जरूरत है। आप इसे कैसे पाते है? मेरे पास बिन / डीबग में एक फ़ोल्डर प्लगइन्स है और मुझे स्थान प्राप्त करने की आवश्यकता है


आप इसकी आवश्यकता क्यों है? आवेदन के पास पहले से ही रास्ता क्यों नहीं है, ऐसा लगता है कि विधानसभा ठीक है? आपकी तैनाती कैसी दिखती है?
— मैकके

जवाबों:


119

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

var path = System.IO.Path.GetDirectoryName( 
      System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);

MSDN के पास एक्जीक्यूटिंग एप्लिकेशन के पथ को निर्धारित करने के तरीके का पूरा संदर्भ है ।

ध्यान दें कि मूल्य में pathके रूप में होगा file:\c:\path\to\bin\folder, इसलिए पथ का उपयोग करने से पहले आपको file:\सामने की तरफ पट्टी करने की आवश्यकता हो सकती है । उदाहरण के लिए:

path = path.Substring(6);

1
नमस्ते, आपके शीघ्र उत्तर के लिए धन्यवाद। ऐसा क्यों है कि अगर मैं इसे खोजने के लिए रास्ता हार्डकोड करता हूं और यदि मैं निम्नलिखित कोड करता हूं तो यह नहीं करता है। एकमात्र अंतर जो मैं देख सकता हूं वह है "\\"। क्या मैं कुछ भूल रहा हूँ? var binpath = Path.GetDirectoryName (असेंबली ।GetExecutingAssembly ()) GetName ()। CodeBase); var fullpath = Path.Combine (binpath, folderName); अगर (निर्देशिका। विशेषज्ञ (पूर्णपथ)) वापसी;
— user9969

6
मेरे मामले में समस्या यह थी कि System.IO.Path.GetDirectoryName () शुरुआत में "फ़ाइल: \\" के साथ एक पथ देता है। मैंने इसे स्ट्रिंग से हटा दिया और सब कुछ काम किया।
— हेतोर कोरटा

ऐसा लगता है कि आउट
— सोर्स

1
path = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly ()। CodeBase); इसने मेरे लिए काम किया
— m1m1k

6
मैं .Replace ("फ़ाइल: \\", "") फ़ाइल उपसर्ग को हटाने के लिए उपयोग करने का सुझाव देता हूं, क्योंकि यह समस्या के लिए अधिक विशिष्ट है।
— टाइनीराकून

71

आप ऐसा कर सकते हैं

    Assembly asm = Assembly.GetExecutingAssembly();
    string path = System.IO.Path.GetDirectoryName(asm.Location);

10
या यह! System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
— गोनैले

9
यदि आप NUnit परीक्षण चला रहे हैं तो यह काम नहीं करता है। उस मामले में पथ TEMP निर्देशिका को इंगित करता है।
— tponthieux

क्या आपको प्रवेश सभा नहीं चाहिए?
— एन-

29

यह वही है जो मैंने इसे पूरा करने के लिए उपयोग किया है:

System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? "");

2
यह IIS होस्टिंग और Winform में सही काम करता है, धन्यवाद।
— डायनामलिनक

धन्यवाद! यह ASP.NET ऐप और कंसोल ऐप के लिए काम करने लगता है। Asp.net RelativeSearchPathमें वास्तविक "बिन" फ़ोल्डर है और कंसोल ऐप में यह है nullऔर BaseDirectoryइसमें वास्तविक "बिन" पथ शामिल है।
— मैरिज पावेल्स्की



3
var path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.