Bagaimana cara mengetahui direktori tempat aplikasi konsol saya berjalan dengan C #?
Bagaimana cara mengetahui direktori tempat aplikasi konsol saya berjalan dengan C #?
Jawaban:
Untuk mendapatkan direktori tempat file .exe berada:
AppDomain.CurrentDomain.BaseDirectory
Untuk mendapatkan direktori saat ini:
Environment.CurrentDirectory
System.AppContext.BaseDirectory
.
Bergantung pada hak yang diberikan kepada aplikasi Anda, apakah penyalinan bayangan berlaku atau tidak dan opsi pemanggilan dan penerapan lainnya, metode yang berbeda dapat bekerja atau memberikan hasil yang berbeda sehingga Anda harus memilih senjata dengan bijak. Karena itu, semua hal berikut ini akan menghasilkan hasil yang sama untuk aplikasi konsol tepercaya penuh yang dijalankan secara lokal di mesin tempatnya berada:
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 );
Anda perlu membaca dokumentasi dari anggota di atas untuk melihat izin yang tepat yang diperlukan.
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Location)
Di .NET, Anda dapat menggunakan System.Environment.CurrentDirectory
untuk mendapatkan direktori tempat proses dimulai.
System.Reflection.Assembly.GetExecutingAssembly().Location
akan memberi tahu Anda lokasi rakitan yang sedang dijalankan (itu hanya menarik jika rakitan yang sedang dijalankan dimuat dari suatu tempat yang berbeda dari lokasi rakitan tempat proses dimulai).
Di windows (tidak yakin tentang Unix dll.) Ini adalah argumen pertama dalam baris perintah.
Di C / C ++ item pertama di argv *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
Misalkan nama proyek aplikasi konsol inti .Net Anda adalah DataPrep.
Dapatkan Direktori Basis Proyek:
Console.WriteLine(Environment.CurrentDirectory);
Keluaran: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);
Keluaran: ~ DataPrep \
Gunakan AppContext.BaseDirectory
untuk .net5.