.net - Hvorfor er der ingen Microsoft.Win64 Navneplads?

Indlæg af Hanne Mølgaard Plasc

Problem



Vi har et Microsoft.Win32 Navneområde, men er det garanteret at arbejde i 64-bit Windows-miljøer? Er der et tilsvarende behov for at have sådanne definitioner for en 64-bit situation?

Bedste reference


.NET applikationer som standard kører på rammerne, der er målrettet mod OS-arkitekturen. Så hvis du kører 32 bit Windows, ville .NET-rammen installeret på maskinen være 32-bit ramme. Alle .NET-applikationer, der kører på denne ramme, vil så løbe i '32 bit'.


Hvis du kører 64 bit Windows, kører du en 64 bit ramme, men den IL, der kører oven på rammen, adskiller sig ikke (som standard) fra den 32 bit IL.


Så kort sagt: det er ligegyldigt, om du kører 32 bit eller 64 bit Windows siden .NET-rammen abstraherer det væk fra C #/VB-koden.


Microsoft.Win32-rammen henviser til de indbyggede API'er inde i Windows. Kort om det virkelig dårlige navn, som Microsoft har givet det, har det intet at gøre med 32 bit vs 64 bit Windows.


I øvrigt er der nogle ting, du ikke kan gøre med 64 bit version af rammen: for eksempel er der ikke en JET database driver i 64 bit ramme.

Andre referencer 1


'Win32' er navnet på platformen (det vil sige core API-sæt), uanset hvilket operativsystem der faktisk er i gang. Med andre ord skal du ikke bekymre dig om det :)

Andre referencer 2


Af samme grund har vi 64 bit binære filer gemt i mappen system32 i 64-bit Windows.


I grund og grund er det fordi ting i Microsoft.Win32 ikke er specifikke for 32-bit Windows. Hvorfor skulle de skade portabilitet uden fordele?