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.
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.
Je n'ai vu personne convertir le LocalPath fourni par la réflexion .Net Core en un chemin System.IO utilisable, alors voici ma version.
public static string GetApplicationRoot()
{
var exePath = new Uri(System.Reflection.
Assembly.GetExecutingAssembly().CodeBase).LocalPath;
return new FileInfo(exePath).DirectoryName;
}
Cela renverra l'intégralité du C:\\xxx\\xxx
chemin formaté vers l'endroit où se trouve votre code.
Pour .NET 6, il y a Environment.ProcessPath.
Véase https://docs.microsoft.com/en-us/dotnet/api/system.environment.processpath?view=net-6.0
Assembly.GetEntryAssembly().Location
o Assembly.GetExecutingAssembly().Location
Utiliser en combinaison avec System.IO.Path.GetDirectoryName()
pour obtenir uniquement le répertoire.
Les chemins de GetEntryAssembly()
y GetExecutingAssembly()
peuvent être différents, même si dans la plupart des cas, le répertoire sera le même.
Avec GetEntryAssembly()
vous devez être conscient que cela peut revenir null
si le module d'entrée n'est pas géré (c'est-à-dire un exécutable C++ ou VB6). Dans ces cas, il est possible d'utiliser GetModuleFileName
à partir de l'API Win32 :
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetModuleFileName(HandleRef hModule, StringBuilder buffer, int length);
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.
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.