¿Hay alguna forma de obtener la ruta del ensamblaje en el que reside el código actual? No quiero la ruta del ensamblaje que llama, sólo el que contiene el código.
Básicamente mi prueba de unidad necesita leer algunos archivos de prueba xml que se encuentran en relación con la dll. Quiero que la ruta siempre se resuelva correctamente, independientemente de si la dll de prueba se ejecuta desde TestDriven.NET, la GUI MbUnit o cualquier otra cosa.
Editar: La gente parece estar malinterpretando lo que estoy pidiendo.
Mi biblioteca de pruebas se encuentra en digamos
C:\Nproyectos\Nmyapplication\daotests\bin\Ndebug\daotests.dll
y me gustaría obtener esta ruta:
C:\projects\myapplication\daotests\bin\Debug\\daotests.dll
Las tres sugerencias hasta ahora me fallan cuando ejecuto desde la Gui de MbUnit:
Environment.CurrentDirectory
da c:\Narchivos de programa\NMbUnit.
System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location da como resultado C:\NDocumentos y Settings\george\Local Settings\Temp\ ....\DaoTests.dll
System.Reflection.Assembly.GetExecutingAssembly().Location
da lo mismo que el anterior.
¿Esto ayuda?
//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 );
El directorio actual donde existe.
Environment.CurrentDirectory; // This is the current directory of your application
Si copias el archivo .xml con build deberías encontrarlo.
o
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetAssembly(typeof(SomeObject));
// The location of the Assembly
assembly.Location;