windows排程執行的程式要注意相對路徑
寫了一個console application程式要讀取同層目錄的一個json檔,並使用nlog紀錄log
一開始程式寫為
using (StreamReader r = new StreamReader("MyJson.json"))
測試時讀檔、產生log一切正常,掛了windows排程執行時發現讀檔失敗(相關訊息可以在事件檢視器的.Net Runtime中查看)
且log檔的位置也跑到C:\Windows\SysWOW64之下
將檔案路徑寫法改為以下,排程執行時可如預期讀檔
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MyJson.json");
而nlog config的路徑加上${basedir}之後也可以如預期產生log
之後嘗試了
Directory.GetCurrentDirectory()
Environment.CurrentDirectory
都是得到C:\WINDOWS\system32,雖然不是SysWOW64但也不是預期的位置
還是使用AppDomain.CurrentDomain.BaseDirectory吧