¿Cómo puedo obtener la ruta del ensamblaje en el que se encuentra el código?

¿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 );
Comentarios (12)

Esto debería funcionar, a no ser que el ensamblaje esté copiado en la sombra:

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

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;
Comentarios (3)