Làm cách nào để tìm ra thư mục ứng dụng console của tôi đang chạy với C #?
Làm cách nào để tìm ra thư mục ứng dụng console của tôi đang chạy với C #?
Câu trả lời:
Để lấy thư mục chứa tệp .exe:
AppDomain.CurrentDomain.BaseDirectory
Để lấy thư mục hiện tại:
Environment.CurrentDirectory
System.AppContext.BaseDirectory.
Tùy thuộc vào các quyền được cấp cho ứng dụng của bạn, việc sao chép bóng có hiệu lực hay không và các tùy chọn gọi và triển khai khác, các phương pháp khác nhau có thể hoạt động hoặc mang lại kết quả khác nhau, vì vậy bạn sẽ phải lựa chọn vũ khí của mình một cách khôn ngoan. Phải nói rằng, tất cả những điều sau đây sẽ mang lại cùng một kết quả cho một ứng dụng bảng điều khiển hoàn toàn đáng tin cậy được thực thi cục bộ tại máy nơi nó cư trú:
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 );
Bạn sẽ cần phải tham khảo tài liệu của các thành viên ở trên để xem các quyền chính xác cần thiết.
Path.GetDirectoryName (Assembly.GetExecutingAssembly (). Vị trí)
Trong .NET, bạn có thể sử dụng System.Environment.CurrentDirectoryđể lấy thư mục mà từ đó quá trình được bắt đầu.
System.Reflection.Assembly.GetExecutingAssembly().Locationsẽ cho bạn biết vị trí của assembly hiện đang thực thi (điều đó chỉ thú vị nếu assembly đang thực thi được tải từ một nơi khác với vị trí của assembly nơi quá trình bắt đầu).
Trên windows (không chắc chắn về Unix, v.v.), nó là đối số đầu tiên trong dòng lệnh.
Trong C / C ++, mục firts trong argv *
WinAPI - GetModuleFileName (NULL, char *, MAX_PATH)
Giả sử tên dự án ứng dụng bảng điều khiển lõi .Net của bạn là DataPrep.
Nhận thư mục cơ sở dự án:
Console.WriteLine(Environment.CurrentDirectory);
Đầu ra: ~ DataPrep \ bin \ Debug \ netcoreapp2.2
Get Project .csproj file directory:
string ProjectDirPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\"));
Console.WriteLine(ProjectDirPath);
Đầu ra: ~ DataPrep \
Sử dụng AppContext.BaseDirectorycho .net5.