Pregunta

Estoy creando un sistema de complementos donde la aplicación principal carga los ensamblados Addin1.dll y Addin2.dll en tiempo de ejecución en nuevos dominios de aplicación.

Sin embargo, en caso de que Addin1.dll esté firmado (nombre seguro) con mi clave y Addin2.dll no, quiero poder cargar solo Addin1.dll y rechazar Addin2.dll.

Sospecho que es necesario hacerlo configurando algunos parámetros en AppDomainSetup.

¿Fue útil?

Solución

Mira en el método Assembly.Load que toma un parámetro de Prueba. Se puede encontrar un ejemplo de cómo crear una evidencia de su clave pública aquí .

Otros consejos

Puede implment un DomainManager y basar su decisión de carga / bloque está en lo que quiera. Le contesté una pregunta algo relacionado aquí.

Puedes usar Método de carga de la clase AppDomain para cargar un nuevo ensamblado en Appdomain, siempre que el entorno del cliente o del usuario final cumpla con la política del editor del ensamblado.

Además, el ensamblaje con nombre seguro sigue todas las reglas establecidas por el editor del ensamblaje y el CLR.Por lo tanto, el usuario del ensamblado debe satisfacer el aspecto de seguridad del ensamblado que se carga en el dominio de la aplicación.

El CLR carga el ensamblado global al que se hace referencia desde el GAC utilizando las propiedades de nombre seguro.Si el ensamblado al que se hace referencia está disponible en el GAC, CLR devolverá el subdirectorio que lo contiene y se cargará el archivo que contiene el manifiesto.Encontrar el ensamblado de esta manera le asegura a la persona que llama que el ensamblado cargado en tiempo de ejecución proviene del mismo editor que creó el ensamblado con el que se compiló el código.Ahora compare el token de clave pública en la tabla AssemblyRef del ensamblado de referencia y el token de clave pública en la tabla AssemblyDef del ensamblado al que se hace referencia.Si el ensamblado al que se hace referencia no está en el GAC, el CLR busca en el directorio base de la aplicación y luego en las rutas privadas identificadas en el archivo de configuración de la aplicación;Si la aplicación que contiene el ensamblaje se instala mediante MSI, CLR invoca a MSI para cargar el ensamblaje requerido.SI el ensamblaje no se encuentra en ninguna de estas ubicaciones, se genera una excepción y finalmente falla la vinculación del ensamblaje.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top