Pregunta

Tengo una biblioteca de terceros que está disponible para descargar en .dlls de 32 bits o 64 bits. Mi máquina de desarrollo ejecuta Windows 7. Mi máquina de producción de destino está ejecutando Windows Server 2008 R2 de 64 bits. La solución de mi proyecto se está construyendo actualmente en cualquier modo CPU.

¿Existe una forma elegante de manejar este caso sin tener que tener proyectos duplicados (MyProject32 y MyProject64, cada uno que hace referencia a la versión apropiada de 32 o 64 bits de la biblioteca de terceros)?

La primera solución en la que pensé es engancharse a la AppDomain.AssemblyResolve evento, y tengo mis bibliotecas de terceros en sus propios subcarpetas de 32 y 64 bits. Luego cargaría el ensamblaje apropiado dinámicamente en función del modo actual.

La segunda solución en la que pensé es construir solo en modo de 32 bits, y solo usar la biblioteca de terceros de 32 bits (que me parece una evasión ...).

Ninguna solución me hace sentir particularmente limpia ... ¡cualquier consejo sería útil!

¿Fue útil?

Solución

Si este es un programa interno, entonces no veo el problema. Instale la DLL de 32 bits en la máquina de desarrollo e instale la DLL de 64 bits en la máquina de producción. No instale la DLL incorrecta en la máquina incorrecta. Con una aplicación interna, el problema de la DLL incorrecta en la máquina es prácticamente equivalente a no tener la DLL allí en absoluto.

Si esta es una aplicación que distribuirá, o no puede depender de que las máquinas tengan las DLL correctas en el lugar correcto, entonces su primera solución suena razonable: descubra qué DLL es apropiado para el entorno de tiempo de ejecución actual, y cárgalo. O, si no se puede cargar, muestre un mensaje de error que indique cuál es el problema.

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