Ich habe zwei exe-Dateien im selben Ordner. Ich kann exe2 über eine Schaltfläche in exe1 ausführen. Heute habe ich einen Kunden während einer Remote-Sitzung (Terminaldienste) beobachtet und exe2 konnte den Fehler "Datei nicht gefunden" nicht ausführen, aber exe1 befand sich bei der Überprüfung im selben Verzeichnis. Sollte ich also AppDomain.CurrentDomain.BaseDirectory oder System.Environment.CurrentDirectory verwenden ?
Vielen Dank
string.GetFullPath(path)
VerwendungenEnvironment.CurrentDirectory
stattCurrentDomain.BaseDirectory
, zu meiner Überraschung.Antworten:
Wenn Sie Dateien im selben Verzeichnis wie Ihre Anwendung suchen möchten,
AppDomain.CurrentDomain.BaseDirectory
ist dies die richtige Wahl.Environment.CurrentDirectory
ist ein Wert, der sich im Laufe der Ausführung Ihrer Anwendung ändern kann und wird. Unter Verwendung von Standardparametern ändert der OpenFileDialog in WinForms diesen Wert beispielsweise in das Verzeichnis, aus dem die Datei ausgewählt wurde.quelle
AppDomain.CurrentDomain.BaseDirectory
Gibt das Verzeichnis zurück, aus dem die aktuelle Anwendungsdomäne geladen wurde.System.Environment.CurrentDirectory
Gibt das aktuelle Systemverzeichnis zurück.In Ihrem Fall
AppDomain.CurrentDomain.BaseDirectory
ist die beste Lösung.quelle
Sie sollten verwenden
AppDomain.CurrentDomain.BaseDirectory
.Zum Beispiel in einer Windows Services-Anwendung:
System.Environment.CurrentDirectory
gibt C: \ Windows \ system32 zurückWährend
AppDomain.CurrentDomain.BaseDirectory
gibt [Application.exe location] zurückEin weiterer wichtiger Faktor ist, dass
AppDomain.CurrentDomain.BaseDirectory
es sich um eine schreibgeschützte Eigenschaft handelt, währendEnvironment.CurrentDirectory
dies bei Bedarf etwas anderes sein kann:quelle
So wie ich es verstehe, sollten Sie verwenden
BaseDirectory
.CurrentDirectory
könnte sich im Laufe der Programmausführung ändern.quelle
Wenn Sie in Visual Studio 2010-Testprojekten die Bereitstellungsoption zum Bearbeiten von Testeinstellungen aktivieren, zeigt AppDomain.CurrentDomain.BaseDirectory auf den Ordner TestResults \ Out (nicht bin \ debug). Der Standardeinstellungspunkt ist jedoch der Ordner bin \ debug.
Hier fand ich eine überzeugende Antwort.
Warum enthält AppDomain.CurrentDomain.BaseDirectory in der asp.net-App nicht "bin"?
quelle
Ich benutze normalerweise so etwas wie:
quelle
Ich habe diese Tage auch durchgemacht, als ich sie benutzte
da es mir ein Problem auf dem Produktionsserver gab, aber mit meinem lokalen Server gut funktionierte,
Also habe ich es mit versucht
Und es hat bei mir sowohl in der Umwelt als auch in der Umwelt funktioniert.
Also, wie alle gesagt haben, sollten wir immer mitgehen
während es das aktuelle Domänenverzeichnis auf den Pfad überprüft.
Weitere Informationen finden Sie hier
Ein Teil des Pfadfehlers auf dem Server konnte nicht gefunden werden
quelle