2014-01-31 12 views
5

In meinem C# -Code, ich Verweise auf eine XML-Datei "file.xml", die im selben Verzeichnis wie die ausführbare Datei selbst ist, mit XmlDocument.Datei nicht gefunden mit Taskplaner

Die Anwendung läuft perfekt in VS, aber wenn ich versuche, die Anwendung mit Taskplaner ausführen, bekomme ich eine System.IO.FileNotFoundException, obwohl alles gleich ist.

Ich verweise auf die Datei mit @".\file.xml". Sind das seltsame Dinge, die für den Taskplaner typisch sind? Entsprechende Berechtigungen werden verwendet.

+3

Haben Sie das Arbeitsverzeichnis der Aufgabe festgelegt? –

+1

Das Programm läuft wahrscheinlich mit einem anderen * aktuellen Arbeitsverzeichnis * unter Taskplaner, als wenn Sie es testen. –

Antwort

0

Sie müssen das aktuelle Arbeitsverzeichnis der Anwendung auf den richtigen Pfad einstellen. Ich weiß nicht, was es ist, wenn Taskplaner Ihre Anwendung startet, aber es ist nie eine gute Idee anzunehmen.

Sie können dies mit Directory.SetCurrentDirectory() tun.

Alternativ können Sie einen absoluten Pfad zu der XML-Datei verwenden.

0

Versuchen Sie Ihr Dokument beziehen unter Verwendung

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

Ist das Windows Forms? Wie ist es relevant? – Kugel

11

Try Startverzeichnis für die Aufgabe einzustellen. Sie können in der Aufgabenplanung festlegen.

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

+1

Das ist * DIE ANTWORT * und sollte als solche markiert werden :) –

5

ich das gleiche Problem begegnet, und ich versuchte, aus den verschiedenen Pfad zu drucken, die .Net für das Programm setzt, ist hier das Ergebnis auf meinem Rechner

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

so möchten Sie wahrscheinlich zu Verwenden Sie AppDomain.CurrentDomain.BaseDirectory, um Ihre Datei zu suchen, wie folgt:

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