Cargar automáticamente assemblies fuera del directorio bin

Fecha: 13/Ago/2004 (12/08/2004)
Autor: Gustavo Bonansea gustavobonansea@yahoo.com.ar


En cualquier aplicación ASP.Net se cargan automáticamente todos los assemblies que se encuentran en el directorio bin. En sitios que son bastante grandes puede crearse una aglomeración de dlls bastante difícil de administrar.

En este artículo veremos como realizar por código la simple tarea de indicarle a la aplicación que debe cargar todos los assemblies que se encuentren en los directorios que le indiquemos. En realidad no es que va a cargar todos los assemblies sino que colocaremos los directorios deseados dentro de la lista de búsqueda del AppDomain (algo así como el Path del viejo MS-DOS ).

De la siguiente forma obtenemos el path de búsqueda de la aplicación:

'Obtengo el path de busqueda del dominio de aplicacion 
AppDomain.CurrentDomain.RelativeSearchPath

Por defecto (en una aplicación web) obtendremos la cadena "bin"

Ahora supongamos que queremos ordenar los assemblies en dos subcarpetas dentro de bin. Las carpetas son "BusinessComponents" y "DataComponents". Para indicar que se deben cargar los assemblies dentro de esas dos subcarpetas deberíamos hacer lo siguiente:

'Agrego algunos directorios al path de busqueda del dominio de aplicacion 
AppDomain.CurrentDomain.AppendPrivatePath("bin\BusinessComponents")
AppDomain.CurrentDomain.AppendPrivatePath("bin\DataComponents")

Por lo tanto después de esto el AppDomain.CurrentDomain.RelativeSearchPath debería tener el valor = "bin;bin\BusinessComponents;bin\DataComponents" y por ende se podrán crear objetos de cualquier assembly dentro de las mismas.

De la misma forma si quisiéramos agregar alguna carpeta que se encuentre a nivel del root del sitio lo haríamos sin incluir el "bin\" en el nombre del directorio.

 


ir al índice