Wie kann ich die "Bit-Ness" ermitteln, unter der meine C # -Anwendung ausgeführt wird?

8

Eine .NET-DLL kann sowohl als 32-Bit- als auch als 64-Bit-Version auf einer Maschine mit einem x64-Prozessor ausgeführt werden. Ich muss zur Laufzeit feststellen, unter welcher Bitness meine Anwendung läuft.

Momentan habe ich etwas wie System.IntPtr.Size == 8 gemacht, aber das scheint ein hässlicher Hack zu sein. Gibt es einen "richtigen" Weg, dies zu bestimmen?

    
Billy ONeal 23.07.2010, 13:52
quelle

3 Antworten

17

In .NET 4 besitzt die Klasse System.Environment zwei statische Eigenschaften: Is64BitOperatingSystem und Is64BitProcess . In früheren .NET-Versionen müssen Sie den IntPtr size-Ansatz verwenden.

    
Richard 23.07.2010, 13:55
quelle
5

Vor .NET 4 wurde vorgeschlagen, die Größe eines IntPtr zu verwenden (4 für 32 Bit und 8 für 64 Bit). Dies gibt Ihnen jedoch nicht die Bissigkeit der Maschine - gibt Ihnen die Bissigkeit der CLR , die verwendet wird.

Das ist ein wichtiger Unterschied, wenn Sie innerhalb eines 32-Bit-Prozesses wie Anwendungs-Add-Ins arbeiten. Ich habe einen Blog-Post über das Finden der Maschinen Bitness basierend auf WMI:

Ссылка

Beachten Sie jedoch, dass ich immer noch nicht sicher bin, ob dies die aktuelle OS-Bitness (wie sie den Prozessor verwendet) wirklich darstellt.

Für die überwiegende Mehrheit der Fälle genügt bei normaler Kompilierung (AnyCPU), die eine eigene App ausführt, IntPtr .

In .NET 4 gibt es jetzt, wie andere gesagt haben, Environment.Is64BitProcess und Environment.Is64BitOperatingSystem .

    
Adam Houldsworth 23.07.2010 14:01
quelle
2

In .Net 4.0 können Sie

verwenden %Vor%     
Toan Nguyen 23.07.2010 13:56
quelle

Tags und Links