Comment puis-je obtenir le chemin de l'assemblage dans lequel se trouve le code ?

Existe-t-il un moyen d'obtenir le chemin de l'assemblage dans lequel réside le code actuel ? Je ne veux pas le chemin de l'assemblage appelant, seulement celui qui contient le code.

En fait, mon test unitaire doit lire des fichiers de test xml qui sont situés relativement à la dll. Je veux que le chemin soit toujours résolu correctement, que la dll de test soit exécutée à partir de TestDriven.NET, de l'interface graphique MbUnit ou d'un autre outil.

Edit : Les gens semblent mal comprendre ce que je demande.

Ma bibliothèque de test est située dans le répertoire

C:\projects\myapplication\daotests\bin\Debug\daotests.dll

et je voudrais obtenir ce chemin :

C:\projects\myapplication\daotests\bin\Debug\

Les trois suggestions faites jusqu'à présent me font échouer lorsque je lance le programme à partir de la Gui MbUnit :

  • Environnement.Répertoire Actuel donne c:\Program Files\MbUnit.

  • System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location donne C:\Documents and Settings\george\Local Settings\Temp\ ....\DaoTests.dll

  • System.Reflection.Assembly.GetExecutingAssembly().Location donne le même résultat que le précédent.

Cela vous aide-t-il ?

//get the full location of the assembly with DaoTests in it
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;

//get the folder that's in
string theDirectory = Path.GetDirectoryName( fullPath );
Commentaires (12)

Cela devrait fonctionner, à moins que l'assemblage ne fasse l'objet d'une " copie fantôme " :

string path = System.Reflection.Assembly.GetExecutingAssembly().Location
Commentaires (0)

Le répertoire actuel où vous existez.

Environment.CurrentDirectory;  // This is the current directory of your application

Si vous copiez le fichier .xml avec build, vous devriez le trouver.

ou

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));

// The location of the Assembly
assembly.Location;
Commentaires (3)