609 votes

Meilleure façon d'obtenir de l'application chemin d'accès au dossier

Je vois qu'il ya des façons d'obtenir de l'application de chemin d'accès au dossier:

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

Quelle est la meilleure façon selon la situation? Merci.

611voto

Joe Points 60749

AppDomain.CurrentDomain.BaseDirectory est probablement le plus utile pour l'accès aux fichiers dont l'emplacement est relative à l'application répertoire d'installation.

Dans un ASP.NET l'application, ce sera le répertoire racine de l'application, ne pas le sous-répertoire bin - ce qui est probablement ce que vous voulez généralement. Dans une application cliente, il sera le répertoire contenant l'exécutable principal.

Dans un VSTO 2005 application, il sera le répertoire contenant les VSTO géré assemblées pour votre application, et non pas, par exemple, le chemin d'accès à l'exécutable Excel.

Les autres peuvent retourner des répertoires différents en fonction de votre environnement - voir, par exemple, @Vimvq1987 de réponse.

CodeBase est l'endroit où le fichier a été trouvé et peut être une URL commençant par http://. Auquel cas Location sera probablement l'assemblée cache de téléchargement. Le code n'est pas garanti à définir pour les assemblées dans le GAC.

61voto

Vimvq1987 Points 4307

Notez que toutes ces méthodes renvoient la même valeur. Dans certains cas, ils peuvent retourner la même valeur, mais attention, leurs objectifs sont différents:

Application.StartupPath 

de retour de l' StartupPath ce paramètre Peut être réglé lors de l'exécution de l'application)

System.IO.Directory.GetCurrentDirectory() 

retour au répertoire courant, qui peut ou peut ne pas être le dossier dans lequel l'application est située, de même que Environment.CurrentDirectory. Dans le cas où vous êtes à l'aide de cette dans une dll, il sera de retour le chemin d'accès de l'endroit où le processus est en cours d'exécution (c'est particulièrement vrai dans ASP.NET)

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