Laden...

Application.StartupPath - letzter Ordner fehlt

Erstellt von da_user vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.382 Views
D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 5 Jahren
Application.StartupPath - letzter Ordner fehlt

Hi,
ich suche einen Weg das Verzeichnis in dem sich meine .exe befindet zu ermitteln. Ich bin ja dort schon fündig geworden mit

Application.StartupPath

Allerdings habe ich damit ein Problem: der letzte Ordner fehlt!
Die .exe befindet sich im Debug-Modus also beispielsweise in

\*Benutzer*\Documents\Visual Studio 2017\Projects\*Projektname*\*Projektname*\bin\x64\Debug

Dann liefert mir aber Application.StartupPath den Ordner

\*Benutzer*\Documents\Visual Studio 2017\Projects\*Projektname*\*Projektname*\bin\x64\

Gibt es dafür eine Lösung, oder mache ich da irgendwas falsch?

VG
Matthias

16.806 Beiträge seit 2008
vor 5 Jahren

Du hast in dem Thread gelesen, dass StartupPath falsche Ergebnisse liefern kann und wie man besser den Pfad ermittelt?

D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 5 Jahren

Ja, aber auch dass die anderen Methoden ebenfalls ihre Probleme haben. So die eine "beste" Lösung lese ich da ehrlich gesagt nicht heraus.

Höchstens noch "Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location);"
Der scheint auch soweit auch zu funktionieren, aber funktioniert der immer wenn die Voraussetzung gegeben ist, dass der Befehl in der exe steckt? Kann ich mich darauf verlassen?

Application.StartupPath habe ich bis dato auch schon öfter verwendet und jetzt ist es das erste Mal, dass dieses Problem auftritt und gefühlt mache ich eigentlich auch nix anders als sonst. Und ich arbeite auch nicht an einem Dienst, sondern an einer ganz normalen Windows.Form-Anwendung.

16.806 Beiträge seit 2008
vor 5 Jahren

Es ist nicht neu, dass Application.StartupPath nicht zuverlässig ist, im Gegensatz zu den anderen Varianten.
Der Thread ist mehr als 10 Jahre alt.

Und natürlich kann es sein, dass je nach eingesetztem .NET Projekttyp eben Variante A, B oder dann eben F besser ist. "Beste" ist daher hinfällig.
Absolutismus bei sich weiter entwickelnden Technologien ist halt schwierig...steht alles klar in dem FAQ-Thread.

D
da_user Themenstarter:in
94 Beiträge seit 2008
vor 5 Jahren

Naja, ich bleib jetzt erstmal bei "Path.GetDirectoryName (Assembly.GetExecutingAssembly ().Location);", mal sehen...

BTW, wenn der Thread ja praktisch schon veraltet ist:
Gibt es da heutzutage bessere/andere Varianten?

16.806 Beiträge seit 2008
vor 5 Jahren

Wo genau soll denn der Thread veraltet sein? 🤔 Magst das mal erklären?
Alle .NET Technologien (.NET Framework, .NET Standard, .NET Core) sowie WPF, WinForms und der ASP.NET Stack sind abgedeckt.
Was fehlt Dir denn?

Xamarin funktioniert ganz anders, ebenso UWP - da hast Du keinen Startpfad sondern ohnehin nur isolierte Apps.
Gleicher Blazor.