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 );
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;