2010-08-09 12 views

Respuesta

10

Assembly.Load es una referencia dinámica ya que carga dinámicamente una DLL externa en tiempo de ejecución. Consideraría una referencia estática más parecida a cuando agrega una referencia a un proyecto .NET y crea el proyecto con esa referencia en su lugar.

EDIT:

Desde el Doc MSDN:

Los registros del compilador estática referencias en los metadatos del manifiesto de ensamblado en tiempo de construcción.

Hmmm, no estoy seguro de esto por mi cuenta. Voy a mantener mi respuesta aquí por ahora, con la esperanza de obtener más comentarios de corrección o ver mejores respuestas.

+0

Esto no es del todo correcto, creo ... una referencia dyanamic como se indica en MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf (VS.71) .aspx) hace referencia a las referencias dinámicas como cargar una referencia con solo la información suficiente para que el tiempo de ejecución tenga que buscar el ensamblaje que se está cargando. Con referencias estáticas, la ubicación de los ensambles (GAC, direcotry de aplicación, etc.) es conocida y aún se puede lograr utilizando Assembly.load. – Achilles

0

Una referencia dinámica como se indica en MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx) hace referencia a las referencias dinámicas como cargar una referencia con solo la información suficiente para que el motor de ejecución busque el ensamblaje que se está cargando. Con referencias estáticas, la ubicación de los ensambles (GAC, direcotry de aplicación, etc.) es conocida y aún se puede lograr utilizando Assembly.load.

2

En referencia a:

¿Cuáles son las implicaciones y sugirió escenarios a utilizar?

Por lo general, si uso Assembly.Load(), es porque estoy desarrollando un sistema conectable. Las referencias dinámicas facilitan la inclusión de ensamblajes que no son necesariamente parte de mi compilación.

Los tipos de creación de instancias de un ensamblaje cargado dinámicamente requieren al menos algo de reflexión. La cantidad de reflexión necesaria puede mitigarse asegurando que los tipos cargados dinámicamente implementen alguna interfaz conocida o clase base (desde un ensamblaje cargado estáticamente).

En resumen, es mucho trabajo utilizar conjuntos cargados dinámicamente; sin embargo, hacerlo puede hacer que una aplicación sea más flexible al permitir a los usuarios desarrollar complementos. Solo pondere las ventajas y desventajas de la flexibilidad anticipada de las referencias dinámicas (que pueden no ser un requisito), y el soporte en tiempo de diseño de Visual Studio para las referencias estáticas.

Una práctica que vale la pena considerar si la construcción de una arquitectura de plug-in es cargar ensamblajes en sus propios AppDomains. Hacerlo le permite tener un control más preciso sobre los permisos de seguridad de los ensamblados en los que puede que no confíe del todo, y proporciona el beneficio adicional de que los ensamblajes pueden descargarse en tiempo de ejecución. Personalmente, me pareció que trabajar con AppDomains requería mucha mano de obra; Sin embargo, si se requieren los beneficios, es bueno saber que los AppDomains están ahí.

Cuestiones relacionadas