Professionnellement, je travaille actuellement à adapter des programmes .net pour qu’ils s’éxécutent sur une architecture 64 bits.
Ces programmes utilisent une assembly tierce (Oracle) et je me suis posé la question de l’architecture cible de compilation de cette assembly.
Pour rappel/information un programme .net peut avoir 3 architectures cible :
- anycpu : c’est le framework au moment de l’exécution qui décidera l’architecture en fonction de la machine
- 32 bits : on cible explicitement l’architecture 32 bits (x86)
- 64 bits : on cible explicitement l’architecture 64 bits (x64)
Donc lorsque l’on a une assembly tierce et que l’n souhaite connaitre l’architecture cible utilisé , il existe un utilitaire fournis avec Visual Studio 2005, nommé CorFlag.
Sur mon poste il se situe dans C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
Il suffit alors de saisir la commande :
corflag.exe [assembly]
La sortie est du type :
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. Version : v2.0.50727 CLR Header: 2.5 PE : PE32+ CorFlags : 9 ILONLY : 1 32BIT : 0 Signed : 1
Pour retrouver notre architecture cible de compilation il faut interpréter les champs PE et 32BIT :
- anycpu : PE = PE32 et 32BIT = 0
- 32 bits : PE = PE32 et 32BIT = 1
- 64 bits : PE = PE32+ et 32BIT = 0
Autre information pouvant être utile, CLR Header indique le framework de compilation
- 2.0 : Framework 1.0 ou 1.1
- 2.5 : Framework 2.0
Source :
http://blogs.msdn.com/gauravseth/archive/2006/03/07/545104.aspx
Image par kennymatic sous CC