Bạn có thể sử dụng:
string path = (new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
Một số gợi ý trong các ý kiến là để vượt qua mà qua System.Uri.UnescapeDataString
(từ vvnurmi) để đảm bảo rằng bất kỳ phần trăm mã hóa được xử lý, và sử dụng Path.GetFullpath
(từ TrueWill) để đảm bảo rằng đường dẫn ở dạng Windows chuẩn (thay vì có dấu gạch chéo thay vì dấu gạch chéo ngược). Dưới đây là một ví dụ về những gì bạn nhận được ở từng giai đoạn:
string s = Assembly.GetExecutingAssembly().CodeBase;
Console.WriteLine("CodeBase: [" + s + "]");
s = (new Uri(s)).AbsolutePath;
Console.WriteLine("AbsolutePath: [" + s + "]");
s = Uri.UnescapeDataString(s);
Console.WriteLine("Unescaped: [" + s + "]");
s = Path.GetFullPath(s);
Console.WriteLine("FullPath: [" + s + "]");
Output nếu chúng ta đang chạy C:\Temp\Temp App\bin\Debug\TempApp.EXE
:
CodeBase: [file:///C:/Temp/Temp App/bin/Debug/TempApp.EXE]
AbsolutePath: [C:/Temp/Temp%20App/bin/Debug/TempApp.EXE]
Unescaped: [C:/Temp/Temp App/bin/Debug/TempApp.EXE]
FullPath: [C:\Temp\Temp App\bin\Debug\TempApp.EXE]
Nguồn
2009-05-14 16:55:43
Assembly.GetExecutingAssembly() Vị trí – RichieHindle