TL; DR執行大會的位置是未知
爲什麼
System.Reflection.Assembly.GetExecutingAssembly().Location
回報"<Unknown>"
?
整個故事: 當我手動運行我的控制檯應用程序,一切順利。當我設置任務計劃程序來運行我的應用程序時,出現了一個問題:我的應用程序找不到一些依賴文件。 這些文件是這樣寫在.config文件中的: <add key="SomeFile" value="SomeFolder\SomeFile.xml"/>
,我只需要相對路徑。當我手動運行我的應用程序時,'當前文件夾'='應用程序文件夾',但是當我使用任務計劃程序運行時,'當前文件夾'= C:\Windows\system32
,因爲有了任務計劃程序,我的應用程序在位於system32的taskeng.exe
下運行。
因此,要找到裝配路徑我想使用此代碼:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
從這個答案https://stackoverflow.com/a/16102640/6184866。
但它不起作用。
你可以得到Directory.GetCurrentDirectory與它在某些變量中相同然後Directory.SetCurrentDirectory到你需要的然後當你完成你的工作後再次將當前dir設置爲temp –