過去在 .NET Framework 想要取得執行檔所在位置,我都是用 System.Reflection.Assembly.GetExecutingAssembly().Location 搞定,很少有無法正常運作的時候,但是到了 .NET Core/.NET
的時代,這個方法已經不再適用於多數情境了。
2022-09-26
過去在 .NET Framework 想要取得執行檔所在位置,我都是用 System.Reflection.Assembly.GetExecutingAssembly().Location 搞定,很少有無法正常運作的時候,但是到了 .NET Core/.NET
的時代,這個方法已經不再適用於多數情境了。
在這篇文章中網友的留言吸引了我的注意,.NET Framework 提供了至少三種取得檔案目前位置的方法:
AppDomain.CurrentDomain.BaseDirectory
System.Reflection.Assembly.GetExecutingAssembly().Location
System.IO.Directory.GetCurrentDirectory()
我還真不知道它們具體上的差異,趁這個機會做了一下實驗順便記錄下來,也提供給各位朋友參考。
這個雷我踩了不下三次,寫下來記錄一下,C# 程式要取得當前目錄的方法我們下關鍵字搜尋可以搜出一堆解決方案,沒意外的話第一個搜尋結果通常是 Directory.GetCurrentDirectory 方法(System.IO) - MSDN - Microsoft,但是這個方法在程式是由 Windows 工作排程器(Task Scheduler)啟動的狀況下就不 Work 了。