2010-05-01 4 views
4

Quelle version de .NET (64 bits vs 32 bits) sera chargée si certains des assemblys référencés dans une application sont compilés avec 32 bits uniquement (au lieu de AnyMachine)? L'application fonctionnera-t-elle toujours en 64 bits ou sera-t-elle forcée à fonctionner en 32 bits si au moins l'un des assemblages référencés est compilé en tant que 32 bits uniquement? L'application fonctionne .NET 3.5.Version .NET avec des assemblages 64 bits et 32 ​​bits

Répondre

4

Le bit-ness est déterminée par le paramètre cible de la plate-forme sur le fichier EXE. Il n'existe aucun mécanisme pour garantir qu'un EXE qui fait référence à un assembly 32 bits uniquement sera obligé de s'exécuter également en mode 32 bits. L'assembly échouera simplement à charger avec une exception BadImageFormatException.

Si votre programme a une dépendance sur une telle DLL, vous devez forcer la cible de la plate-forme sur votre projet EXE de AnyCPU à x86.

+0

Voudrait-il échouer au tout début de l'application ou lorsque l'ensemble est utilisé acually? – user31673

+2

Quand il est utilisé. Ce qui pourrait être proche du début. –

5

L'application sera forcé de fonctionner comme 32 bits

+1

Et si l'assembly est chargé dynamiquement et que le processus est 64 bits, l'assembly 32 bits échouera à charger. – EricLaw

+0

Et si l'assembly référencé est compilé en tant que AnyCPU mais en utilisant une DLL non managée, il ne fonctionnera pas si vous ne fournissez pas une version 64 bits de la DLL non gérée –

+0

Le bit-ness du processus n'est-il pas déterminé par l'exécutable principal, et si ce module fait référence à des assemblages d'un autre bit, ceux-ci échoueront à charger, ne pas forcer le processus à un autre bit-ness? Par exemple, si vous créez un exécutable et le compilez pour AnyCPU, mais qu'il fait référence à un ensemble d'assemblages 32 bits, le processus fonctionnera correctement sur un système d'exploitation 32 bits, mais ne chargera pas les assemblages supplémentaires sur un système d'exploitation 64 bits ? –

Questions connexes