1135 votes

Comment puis-je obtenir le chemin de l'application dans une application console .NET ?

Comment trouver le chemin de l'application dans une application console ?

En Formulaires Windows je peux utiliser Application.StartupPath pour trouver le chemin actuel, mais cela ne semble pas être disponible dans une application console.

7 votes

Avez-vous installé .NET Framework sur la machine cible (Client, Développement) ? Si votre réponse est vraie ; Alors, vous pouvez ajouter une référence à System.Windows.Forms.dll et utiliser Application.StartupPath ! C'est le meilleur moyen si vous voulez éviter les exceptions futures !

0 votes

AppDomain.BaseDirectory est le répertoire de l'application. Soyez conscient que l'application peut se comporter différemment dans l'environnement VS et l'environnement Win. Mais AppDomain devrait être le même que application.path mais j'espère que ce n'est pas seulement pour IIS.

47voto

fizzled Points 148

La réponse ci-dessus correspondait à 90 % de ce dont j'avais besoin, mais elle renvoyait un Uri au lieu d'un chemin normal.

Comme expliqué dans le post des forums MSDN, Comment convertir un chemin URI en chemin de fichier normal ? j'ai utilisé ce qui suit :

// 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 Points 440

Si vous cherchez un moyen compatible avec .NET Core, utilisez

System.AppContext.BaseDirectory

Cela a été introduit dans .NET Framework 4.6 et .NET Core 1.0 (et .NET Standard 1.3). Voir : Propriété AppContext.BaseDirectory .

Selon cette page ,

C'est le remplacement préféré de AppDomain.CurrentDomain.BaseDirectory dans .NET Core.

32voto

PSU_Kardi Points 1574

C'est peut-être ce que vous cherchez à faire :

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

29voto

ButtShock Points 57

Vous pouvez utiliser celui-ci à la place.

System.Environment.CurrentDirectory

22voto

F.Alves Points 11

Pour les applications de console, vous pouvez essayer ceci :

System.IO.Directory.GetCurrentDirectory();

Sortie (sur ma machine locale) :

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

Ou vous pouvez essayer (il y a un backslash supplémentaire à la fin) :

AppDomain.CurrentDomain.BaseDirectory

Sortie :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X