2010-06-23 9 views
1

Je suis actuellement en train de porter un de mes projets de x86 à x64. C'est un plugin et doit absolument fonctionner en x64, car l'hôte aussi.Comment créer une DynamicAssembly x64

Une partie de l'application crée un ensemble dynamique:

AppDomain.CurrentDomain.DefineDynamicAssembly(...) 

et enregistre que sur le disque. Je l'ai vérifié avec dumpbin /headers, c'est en x86!

Comment puis-je forcer l'assemblage à être x64 à partir du code?

Répondre

3

Ceci est tout à fait normal, les assemblages qui contiennent du code IL sont toujours empaquetés dans une DLL qui a un en-tête de 32 bits. Même chose avec Project + Properties, onglet Build, Platform Target = Any CPU. N'oubliez pas: les assemblages .NET purs ne contiennent que des données, pas de code. Le fait que le compilateur JIT convertisse le code IL en 32 bits ou en 64 bits est déterminé par le nombre de bits du fichier EXE de démarrage.

+0

Le problème est que l'hôte n'exécutera pas les plugins. Pire encore: je n'ai pas non plus de message d'erreur. C'est pourquoi je soupçonne que l'hôte a des difficultés à charger dynamiquement l'assemblage. L'hôte est une application native, offrant des fonctionnalités d'extensibilité .NET. –

+0

Excusez-moi. Juste commencé PC aujourd'hui et tout fonctionne. Merci d'avoir éclairci la question! –