3192854891_9fe228a7fa_b_redimProfessionnellement, 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

Les commentaires sont fermés.