2010-12-01 11 views
7

Tengo una aplicación Windows Forms y estoy implementando esa aplicación a través de la implementación de ClickOnce. Ahora, tengo un archivo DLL de terceros y tiene diferentes versiones para el sistema operativo de 32 bits y de 64 bits.Identificación de la máquina de destino (32 bit o 64 bit) con implementación ClickOnce

¿Es posible implementar diferentes archivos DLL basados ​​en la máquina de destino (32 bits o 64 bits) a través de ClickOnce?

+0

¿Las dos versiones dll diferentes tienen el mismo nombre de archivo? – codeConcussion

+0

@whatknott: Sí, ambos dlls tienen el mismo nombre, incluso el número de versión. La única diferencia es el tamaño. – JPReddy

Respuesta

3

[Editar]

No es necesario el uso de la reflexión. Puede agregar una referencia a su programa directamente en el cargador y patearlo. Hice una publicación en el blog con el código al Tech and Me.


Puede incluir ambas versiones en su implementación, pero asígneles un nombre diferente. A continuación, haga que una aplicación de cargador compruebe si está en un sistema de 32 bits o de 64 bits, copie el dll correcto (por ejemplo, thirdparty64.dll -> thirdparty.dll) al cual está vinculado su programa real y luego invoque su programa desde el cargador con, por ejemplo Assembly.Load y usa la reflexión para iniciar tu método principal.

Un método más fácil es compilar su aplicación para que se ejecute como x86, asegurando que siempre se ejecutará en modo de 32 bits. Si no confía en alguna aplicación específica instalada en la máquina en versiones de 32/64 bits, esta podría ser la mejor opción.

+0

Gracias por su respuesta. ¿Es esto posible con Clickonce? ¿Se ejecutará esta aplicación de carga mientras Clickonce implementa la aplicación o se debe ejecutar en mi aplicación primero? Durante el despliegue de clickonce no estoy seguro de cómo copiar este dll, ya que no estoy seguro de si nos da la ubicación de instalación. Por favor corrígeme si estoy equivocado. – JPReddy

+0

Tendría que hacerlo una vez que la aplicación se ejecuta por primera vez, no en la implementación. Lo intentaré yo también. –

+0

Hice un pequeño proyecto de prueba y una publicación de blog sobre esto. Editado mi respuesta para reflejarlo. –

Cuestiones relacionadas