1135 Stimmen

Wie kann ich den Pfad der Anwendung in einer .NET-Konsolenanwendung ermitteln?

Wie finde ich den Pfad der Anwendung in einer Konsolenanwendung?

Unter Windows-Formulare kann ich verwenden Application.StartupPath um den aktuellen Pfad zu finden, aber das scheint in einer Konsolenanwendung nicht verfügbar zu sein.

7 Stimmen

Installieren Sie .NET Framework auf dem Zielcomputer (Client, Entwicklung)? wenn Ihre Antwort wahr ist; So können Sie einen Verweis auf System.Windows.Forms.dll hinzufügen und Application.StartupPath verwenden! Dies ist der beste Weg, wenn Sie weitere zukünftige Ausnahmen vermeiden wollen!

0 Stimmen

AppDomain.BaseDirectory ist das App-Verzeichnis. Beachten Sie, dass sich die Anwendung in der VS-Umgebung anders verhalten kann als in der Win-Umgebung. Aber AppDomain sollte gleich sein, nicht wie application.path, aber ich hoffe, dass dies nicht nur für IIS ist.

47voto

fizzled Punkte 678

Die obige Antwort entsprach zu 90 % dem, was ich brauchte, gab aber einen Uri anstelle eines regulären Pfads zurück.

Wie im Beitrag in den MSDN-Foren erläutert, Wie konvertiert man einen URI-Pfad in einen normalen Dateipfad? habe ich das Folgende verwendet:

// Get normal filepath of this assembly's permanent directory
var path = new Uri(
    System.IO.Path.GetDirectoryName(
        System.Reflection.Assembly.GetExecutingAssembly().CodeBase)
    ).LocalPath;

44voto

Dejan Punkte 7559

Wenn Sie nach einer .NET Core-kompatiblen Methode suchen, verwenden Sie

System.AppContext.BaseDirectory

Dies wurde in .NET Framework 4.6 und .NET Core 1.0 (und .NET Standard 1.3) eingeführt. Siehe: AppContext.BaseDirectory-Eigenschaft .

Según diese Seite ,

Dies ist der bevorzugte Ersatz für AppDomain.CurrentDomain.BaseDirectory in .NET Core

32voto

ist_lion Punkte 3027

Vielleicht möchten Sie dies tun:

System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

29voto

ButtShock Punkte 321

Können Sie stattdessen diese hier verwenden.

System.Environment.CurrentDirectory

22voto

F.Alves Punkte 1031

Für Konsolenanwendungen können Sie dies versuchen:

System.IO.Directory.GetCurrentDirectory();

Ausgabe (auf meinem lokalen Rechner):

c: \users\xxxxxxx\documents\visual Atelier 2012 \Projects\ImageHandler\GetDir\bin\Debug

Oder Sie können es versuchen (es gibt einen zusätzlichen Backslash am Ende):

AppDomain.CurrentDomain.BaseDirectory

Sortie :

c: \users\xxxxxxx\documents\visual Atelier 2012 \Projects\ImageHandler\GetDir\bin\Debug\

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X