Forums Neueste Beiträge
 

Finden von Dateien, die sich im selben Verzeichnis wie die .EXE oder .DLL befinden

06/05/2010 - 08:08 von Holger Vorberg | Report spam
Ich bin auf folgendes Problem gestoßen:

Zum einlesen einer XML Datei benutze ich die .Load() Methode der
XmlDocument Klasse. Dieser Methode kann ich als Parameter einen
Dateinamen übergeben. Da die zu ladende XML Datei im selben Verzeichnis
liegt, wie die .DLL aus der ich sie laden will, benuzte ich nur den
eigentlichen Dateinamen, also ohne Pfad. Das klappt auf meinem
Entwicklungsrechner auch einwandfrei. Auf den Zielsystemen kommt es aber
vor, dass die Datei nicht gefunden wird. Dort muss ich den gesamten Pfad
der Datei angeben, den ich dann erstmal mit
"My.Application.Info.DirectoryPath" ermitteln. Woran kann das liegen?

MfG
Holger Vorberg
 

Lesen sie die antworten

#1 Thorsten Doerfler
06/05/2010 - 08:20 | Warnen spam
Holger Vorberg schrieb:
Zum einlesen einer XML Datei benutze ich die .Load() Methode der
XmlDocument Klasse. Dieser Methode kann ich als Parameter einen
Dateinamen übergeben. Da die zu ladende XML Datei im selben Verzeichnis
liegt, wie die .DLL aus der ich sie laden will, benuzte ich nur den
eigentlichen Dateinamen, also ohne Pfad. Das klappt auf meinem
Entwicklungsrechner auch einwandfrei. Auf den Zielsystemen kommt es aber
vor, dass die Datei nicht gefunden wird. Dort muss ich den gesamten Pfad
der Datei angeben, den ich dann erstmal mit
"My.Application.Info.DirectoryPath" ermitteln. Woran kann das liegen?



Wenn Du keinen Pfad angibst, wird im aktuellen Verzeichnis gesucht und
nicht, wie irrtümlich immer wieder angenommen, im Anwendungsverzeichnis.
Dass das aktuelle Verzeichnis initial das Anwendungsverzeichnis ist,
kann man als Zufall betrachten. Zum einen kann das sich das aktuelle
Verzeichnis wàhrend der Laufzeit àndern (z.B. bei Verwendung des
Open-/SaveFileDialog mit den Standardeinstellungen) oder der Benutzer
legt in der Verknüpfung zu der Anwendung ein anderes abweichendes
Arbeitsverzeichnis fest.

Wenn Du also wirklich die Datei immer aus dem Anwendungsverzeichnis
lesen möchtest, musst Du den Pfad über Application.StartupPath in
Windows Forms Anwendungen bzw.
IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
in Konsolenanwendungen ermitteln und absolut angeben.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen