2010-12-01 39 views
7

J'ai une application Windows Forms et je déploie cette application via le déploiement ClickOnce. Maintenant, j'ai un fichier DLL tiers et il a des versions différentes pour les systèmes d'exploitation 32 bits et 64 bits.Identification de la machine cible (32 bits ou 64 bits) avec le déploiement ClickOnce

Est-il possible de déployer différents fichiers DLL basés sur la machine cible (32 bits ou 64 bits) via ClickOnce?

+0

Est-ce que les deux versions de dll différentes ont le même nom de fichier? – codeConcussion

+0

@whatknott: Oui, les deux DLL ont le même nom, même le numéro de version. La seule différence est la taille. – JPReddy

Répondre

3

[Modifier]

Il est pas nécessaire d'utiliser la réflexion. Vous pouvez ajouter une référence à votre programme directement dans le chargeur et le lancer. Avez-un billet de blog avec le code à ce sujet au Tech and Me. Vous pouvez inclure les deux versions dans votre déploiement, mais les nommer différemment. Ensuite, demandez à l'application loader de vérifier si vous êtes sur un système 32 bits ou 64 bits, copiez la bonne DLL (par exemple thirdparty64.dll -> thirdparty.dll) à laquelle votre vrai programme est lié, puis invoquez votre programme depuis le chargeur avec par exemple Assembly.Load et utilisez la réflexion pour démarrer votre méthode principale.

Une méthode plus simple consiste à compiler votre application pour l'exécuter en tant que x86, en s'assurant qu'elle fonctionnera toujours en mode 32 bits. Si vous ne comptez pas sur une application spécifique installée sur la machine dans les versions 32/64 bits, cela pourrait être le meilleur choix.

+0

Merci pour votre réponse. Est-ce possible avec Clickonce? Est-ce que cette application loader va s'exécuter alors que clickonce déploie l'application ou doit-elle être exécutée sur ma première application? Pendant le déploiement de clickonce, je ne suis pas sûr de savoir comment copier cette DLL, car je ne suis pas sûr si cela nous donne l'emplacement de l'installation. Corrigez-moi si j'ai tort, s'il-vous plait. – JPReddy

+0

Vous devriez le faire une fois que l'application s'exécute la première fois, pas sur le déploiement. Je vais l'essayer moi aussi. –

+0

A fait un petit projet de test et de blog sur ce sujet. Edited ma réponse pour le refléter. –