string baseDir = AppDomain.CurrentDomain.BaseDirectory;
// 例:D:\Projects\MyApp\bin\Debug\
優點:
Environment.CurrentDirectory 可被改變)。| API | 返回值 | 適用場景 |
|---|---|---|
AppDomain.CurrentDomain.BaseDirectory | 程序集所在目錄(含尾斜杠) | **首選**,穩定可靠 |
Assembly.GetEntryAssembly().Location | 入口程序集完整路徑 | 需獲取 .exe 文件名時 |
Environment.CurrentDirectory | 進程當前工作目錄 | 用戶在命令行執行時的目錄,**不可靠** |
Directory.GetCurrentDirectory() | 同上 | 同上 |
Application.StartupPath (WinForms) | 啟動目錄 | 僅限 WinForms,本質同 BaseDirectory |
GetCurrentDirectory() (Win32 API) | 當前工作目錄 | 不推薦,需 P/Invoke,同 Environment.CurrentDirectory |
string mdbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data", "MyData.mdb");
// 確保目錄存在
Directory.CreateDirectory(Path.GetDirectoryName(mdbPath));
**永遠使用 AppDomain.CurrentDomain.BaseDirectory** 定位程序部署目錄下的相對文件(配置、數據庫、日誌)。避免 Environment.CurrentDirectory 導致的「開發機正常、用戶機失敗」問題。