2014-01-31 58 views
5

在我的C#代碼中,我使用XmlDocument引用XML文件「file.xml」,它與可執行文件本身位於同一目錄中。使用任務計劃程序找不到文件

該應用程序在VS中運行良好,但是當我嘗試使用Task Scheduler運行應用程序時,即使所有內容都一樣,我也會得到System.IO.FileNotFoundException

我使用@".\file.xml"來引用文件。這是一些奇怪的東西特定於任務計劃?使用適當的權限。

+3

您是否設置了任務的工作目錄? –

+1

該程序可能運行在Task Scheduler下的一個不同的*當前工作目錄下,而不是在你測試它時。 –

回答

0

您需要將應用程序的當前工作目錄設置爲正確的路徑。我不知道Task Scheduler何時啓動您的應用程序,但這不是一個好主意。

你可以用Directory.SetCurrentDirectory()這樣做。

或者,您可以使用絕對路徑到XML文件。

0

嘗試使用

Application.StartupPath(@"\file.xml") 
+0

這是Windows窗體嗎?它有什麼關係? – Kugel

11

嘗試設置任務啓動目錄指的文檔。您可以在任務計劃程序中進行設置。

Select Task -> Right Click -> Properties -> Actions Tab -> Select Action -> Edit -> Start in (optional)

+1

這是*答案*,應標記爲:) –

5

我遇到了同樣的問題,我試圖打印出的.Net設定了程序的各種路徑,這裏是我的機器上的結果

AppDomain.CurrentDomain.BaseDirectory: <my program folder> 
Directory.GetCurrentDirectory();: C:\Windows\system32 
Environment.CurrentDirectory: C:\Windows\system32 

所以你可能要使用AppDomain.CurrentDomain.BaseDirectory找到您的文件,如下所示:

string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "file.xml"); 
// use this path to open xml and do your work with it 
相關問題