58 votes

Quel est le meilleur moyen de déterminer le répertoire racine de l'application?

Je dois obtenir toutes les dll dans le répertoire racine de mon application. Quelle est la meilleure façon de le faire?

 string root = Application.StartupPath;
 

ou

 string root = new FileInfo(Assembly.GetExecutingAssembly().Location).FullName;
 

et après ça

 Directory.GetFiles(root, "*.dll");
 

Quel est le meilleur chemin? Y a-t-il de meilleurs moyens?

80voto

Greg Dean Points 12048

AppDomain.CurrentDomain.BaseDirectory est ma façon de procéder.

Pourtant:

Application.StartupPath récupère le répertoire de votre exécutable

AppDomain.BaseDirectory obtient le répertoire utilisé pour résoudre les assemblys

Comme ils peuvent être différents, vous voudrez peut-être utiliser Application.StartupPath, sauf si vous vous souciez de la résolution de l'assembly.

24voto

Rob Prouse Points 9193

Il dépend. Si vous voulez le répertoire de l'EXE qui a commencé à la demande, soit de vos deux exemples de travail. N'oubliez cependant pas que .NET est très souple, et il se pourrait qu'une autre application qui est liée à votre EXE et de l'est de l'appeler, éventuellement à partir d'un autre répertoire.

Ça n'arrive pas très souvent et vous aurait probablement écrit s'il le faisait, mais c'est une possibilité. À cause de cela, je préfère préciser que l'assemblée, je suis intéressé et obtenir le répertoire à partir de cela. Alors je sais que j'ai toutes les Dll dans le même répertoire que celui spécifique de l'assemblée. Par exemple, si vous avez une application MyApp.exe avec une classe elle-MyApp.MyClass, alors vous feriez cela;

string root = string.Empty;
Assembly ass = Assembly.GetAssembly( typeof( MyApp.MyClass ) );
if ( ass != null )
{
   root = ass.Location;
}

1voto

Telans Points 62

Si vous souhaitez obtenir le chemin du dossier racine de l'application, utilisez ci-dessous l'exemple de code.

 string path =new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.FullName
 

-1voto

abatishchev Points 42425
Environment.CurrentDirectory

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