मुझे कैसे पता चलेगा कि C # के साथ मेरा कंसोल ऐप किस डायरेक्टरी में चल रहा है?
जवाबों:
निर्देशिका प्राप्त करने के लिए जहां .exe फ़ाइल है:
AppDomain.CurrentDomain.BaseDirectory
वर्तमान निर्देशिका प्राप्त करने के लिए:
Environment.CurrentDirectory
System.AppContext.BaseDirectory।
आपके आवेदन को दिए गए अधिकारों के आधार पर, कि छाया प्रति प्रभाव में है या नहीं और अन्य आह्वान और परिनियोजन के विकल्प, अलग-अलग तरीके अलग-अलग काम कर सकते हैं या अलग-अलग परिणाम दे सकते हैं, इसलिए आपको बुद्धिमानी से अपना हथियार चुनना होगा। यह कहने के बाद कि, निम्नलिखित सभी पूरी तरह से विश्वसनीय कंसोल एप्लिकेशन के लिए एक ही परिणाम प्राप्त करेंगे जो मशीन में स्थानीय रूप से निष्पादित होते हैं जहां यह रहता है:
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 );
आवश्यक अनुमतियों को देखने के लिए आपको उपरोक्त सदस्यों के प्रलेखन से परामर्श करना होगा।
Path.GetDirectoryName (Assembly.GetExecutingAssembly ()। स्थान)
.NET में, आप System.Environment.CurrentDirectoryउस निर्देशिका को प्राप्त करने के लिए उपयोग कर सकते हैं जहां से प्रक्रिया शुरू की गई थी।
System.Reflection.Assembly.GetExecutingAssembly().Locationआपको वर्तमान में निष्पादित विधानसभा का स्थान बताएगा (यह केवल तभी दिलचस्प है जब वर्तमान में निष्पादित विधानसभा असेंबली के स्थान से भिन्न होती है जहां प्रक्रिया शुरू हुई थी)।
विंडोज़ पर (यूनिक्स आदि के बारे में निश्चित नहीं) यह कमांडलाइन में पहला तर्क है।
Argv में C / C ++ फ़र्स्ट आइटम में *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
मान लें कि आपका .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 \
AppContext.BaseDirectory.Net5 के लिए उपयोग करें ।