मुझे कैसे पता चलेगा कि मेरा कंसोल ऐप किस निर्देशिका में चल रहा है?


91

मुझे कैसे पता चलेगा कि C # के साथ मेरा कंसोल ऐप किस डायरेक्टरी में चल रहा है?

जवाबों:


159

निर्देशिका प्राप्त करने के लिए जहां .exe फ़ाइल है:

AppDomain.CurrentDomain.BaseDirectory

वर्तमान निर्देशिका प्राप्त करने के लिए:

Environment.CurrentDirectory

2
धन्यवाद। मदद करता है जब C # .exe एक फ़ोल्डर में है, लेकिन दूसरे फ़ोल्डर से
— मंगवाया गया है

14
.NET Core के लिए, यह है System.AppContext.BaseDirectory।
— नाइटऑवल 88

15

आपके आवेदन को दिए गए अधिकारों के आधार पर, कि छाया प्रति प्रभाव में है या नहीं और अन्य आह्वान और परिनियोजन के विकल्प, अलग-अलग तरीके अलग-अलग काम कर सकते हैं या अलग-अलग परिणाम दे सकते हैं, इसलिए आपको बुद्धिमानी से अपना हथियार चुनना होगा। यह कहने के बाद कि, निम्नलिखित सभी पूरी तरह से विश्वसनीय कंसोल एप्लिकेशन के लिए एक ही परिणाम प्राप्त करेंगे जो मशीन में स्थानीय रूप से निष्पादित होते हैं जहां यह रहता है:

Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( new Uri(Assembly.GetEntryAssembly().CodeBase).LocalPath );
Console.WriteLine( Assembly.GetEntryAssembly().Location );
Console.WriteLine( Environment.GetCommandLineArgs()[0] );
Console.WriteLine( Process.GetCurrentProcess().MainModule.FileName );

आवश्यक अनुमतियों को देखने के लिए आपको उपरोक्त सदस्यों के प्रलेखन से परामर्श करना होगा।



3

.NET में, आप System.Environment.CurrentDirectoryउस निर्देशिका को प्राप्त करने के लिए उपयोग कर सकते हैं जहां से प्रक्रिया शुरू की गई थी।
System.Reflection.Assembly.GetExecutingAssembly().Locationआपको वर्तमान में निष्पादित विधानसभा का स्थान बताएगा (यह केवल तभी दिलचस्प है जब वर्तमान में निष्पादित विधानसभा असेंबली के स्थान से भिन्न होती है जहां प्रक्रिया शुरू हुई थी)।


1

विंडोज़ पर (यूनिक्स आदि के बारे में निश्चित नहीं) यह कमांडलाइन में पहला तर्क है।

Argv में C / C ++ फ़र्स्ट आइटम में *

WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)


हाँ, यह .NET में भी ऐसा ही है। प्रथम आर्ग हमेशा निष्पादन योग्य का पूर्ण पथ होता है।
— एडम नील

1

Application.StartUpPath;


कुछ प्रलेखन से जोड़ने के लिए देखभाल?
— जॉन शीहान

0

मान लें कि आपका .Net कोर कंसोल एप्लिकेशन प्रोजेक्ट का नाम DataPrep है।

प्रोजेक्ट बेस डायरेक्टरी प्राप्त करें:

Console.WriteLine(Environment.CurrentDirectory);

आउटपुट: ~ DataPrep \ bin \ Debug \ netcoreapp2.2

Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);

आउटपुट: ~ DataPrep \


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.