2008-10-14 4 views

Répondre

4

Un projet géré est automatiquement construit en fonction de l'architecture sélectionnée => le projet C# par défaut créé sur AMD64 sera AMD64, X86 sur X86. Le natif est toujours 32 bits par défaut.

Pour définir explicitement une plate-forme:

1 ouvrir l'explorateur de solution, solution de sélection, droit droit-> Configuration Manager.

2 Aller à 'Plate-forme de la solution active', cliquez sur Nouveau.

3 Dans la boîte de dialogue 'Nouvelle plate-forme de solution' qui s'affiche, sélectionnez la nouvelle plate-forme, par exemple Itanium. Définissez 'Copy Settings From' sur 'Any CPU' qui était le paramètre par défaut dans 'Active Solution Platform'.

4 cliquez sur OK.

C'est de WebLog

+0

ne fonctionnera pas avec les éditions Express de Visual Studio ... –

3

Comme Patrick Desjardins a dit, avec un peu plus.

Méfiez-vous si vous avez DLL tiers qui utilise Interop et est compilé avec 32 bits. Dans ce cas, vous devrez spécifiquement définir tous vos assemblys qui l'utilisent pour utiliser x86 ou toutes sortes de choses bizarres se produiront.

6

Vous pouvez également faire une vérification à l'exécution, juste pour être sûr:

using System; 
using System.Runtime.InteropServices; 

class SystemChecker 
{ 
    static bool Is64Bit 
    { 
     get { return Marshal.SizeOf(typeof(IntPtr)) == 8; } 
    } 
} 
1

Vous pouvez compiler pour 64bit à travers le /platform -flag. Notez que Visual Studio Express n'a aucun paramètre de compilation 64 bits simple. Pour plus d'informations, voir here et here. Tiré de la deuxième source est les informations suivantes:

Sur un Windows 64 bits du système d'exploitation:

  • Assemblées compilées avec /platform:x86 exécutera sur le fonctionnement CLR 32 bits sous WOW64.
  • compilé avec le Exécutables /platform:anycpu exécutera sur le CLR 64 bits.
  • Les DLL compilées avec /platform:anycpu s'exécuteront sur le même CLR que le processus dans lequel elles sont chargées.

Runtime Check:

Vous pouvez vérifier l'environnement de bit d'exécution lors de l'exécution par l'une des options suivantes

bool is64BitProcess = IntPtr.Size == 8; 
int bitProcess = IntPtr.Size*8; 
//C# 4 provides System.Environment.Is64BitProcess 
//TimothyP's solution: 
bool is64BitProcess = Marshal.SizeOf(typeof(IntPtr)) == 8; 
Questions connexes