C# windows排程執行console application的相對路徑

  • 1587
  • 0

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吧