Bagaimana cara mengetahui direktori tempat aplikasi konsol saya berjalan dengan C #?
c#
.net
console-application
John Sheehan
sumber
sumber
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.
sumber
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Location)
sumber
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).sumber
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)
sumber
Application.StartUpPath;
sumber
Misalkan nama proyek aplikasi konsol inti .Net Anda adalah DataPrep.
Dapatkan Direktori Basis Proyek:
Keluaran: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory: string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")); Console.WriteLine(ProjectDirPath);
Keluaran: ~ DataPrep \
sumber
Gunakan
AppContext.BaseDirectory
untuk .net5.sumber