Bagaimana cara mengetahui direktori tempat aplikasi konsol saya dijalankan?


Jawaban:


160

Untuk mendapatkan direktori tempat file .exe berada:

AppDomain.CurrentDomain.BaseDirectory

Untuk mendapatkan direktori saat ini:

Environment.CurrentDirectory

2
Terima kasih. Membantu ketika C # .exe ada di satu folder tetapi dipanggil dari folder lain (misalnya: ketika ada di sistem PATH)
DeepSpace101

14
Untuk .NET Core, itu System.AppContext.BaseDirectory.
NightOwl888

15

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.



3

Di .NET, Anda dapat menggunakan System.Environment.CurrentDirectoryuntuk mendapatkan direktori tempat proses dimulai.
System.Reflection.Assembly.GetExecutingAssembly().Locationakan 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).


1

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)


Ya, di .NET juga sama. Arg pertama selalu merupakan jalur lengkap yang dapat dieksekusi.
Adam Neal

1

Application.StartUpPath;


mau menautkan ke beberapa dokumentasi?
John Sheehan

0

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 \


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.