2011-09-15 10 views
5

Supongo que tengo un ensamblado .net .dll que usa el ensamblado de .NET de terceros B.dll y el ensamblado de .net de terceros C.dll.¿Cómo usar 2 bibliotecas .NET de terceros cuando entran en conflicto sus dependencias no administradas?

Resulta que internamente B.dll utiliza el ensamblado no administrado D.dll (versión 1) y C.dll utiliza el ensamblado no administrado D.dll (versión 2).

B y C vienen de diferentes proveedores y solo se prueban con su versión correcta de D.dll.

¿Cómo puedo implementar A para que B y C funcionen correctamente?

Editar:

Creo que hay tres problemas distintos:

1) ¿Cómo controlar externamente la caminos B y C para su uso en busca de D.

2) Cómo controlar externamente las rutas que D usa para sus propias dependencias.

3) Cómo asegurar que el proceso dirige las llamadas de función correctamente.

Mi investigación sugiere que sin control de tiempo de compilación de todos los módulos de esto puede ser imposible ...

Respuesta

1

me gustaría probar para configurar varias carpetas de basura por medio de "sondeo" sección de configuración.

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <probing privatePath="bin;bin\B;bin\C"/> 
     </assemblyBinding> 
    </runtime> 
</configuration> 

entonces yo pondría B.dll y sus dependencias no administrados en la carpeta bin \ B y C.dll y sus dependencias no administrados en la carpeta bin \ C.

+0

Según mi entender, esto redireccionaría para encontrar B y C; sin embargo, esto no encadena automáticamente la búsqueda no administrada de D. – morechilli

+0

@morechilli: por lo que entiendo, B y C deberían buscar sus dependencias una al lado de la otra, por lo que cada (B y C) deben encontrar las versiones correspondientes de D – ivan

+0

gracias por la ayuda. ¿Tiene un enlace a algo que describa este comportamiento? No he encontrado ninguna sugerencia de que este sea el caso. – morechilli

Cuestiones relacionadas