Tenemos un espacio de nombres Microsoft.Win32, pero ¿está garantizado que funciona en entornos Windows de 64 bits? ¿Existe una necesidad equivalente de tener tales definiciones para una situación de 64 bits?¿Por qué no hay espacio de nombres Microsoft.Win64?
Respuesta
.NET las aplicaciones se ejecutan de forma predeterminada en el marco que se dirige a la arquitectura del sistema operativo. Entonces, si está ejecutando Windows de 32 bits, el marco .NET instalado en la máquina sería el marco de 32 bits. Todas las aplicaciones .NET que se ejecutan en este marco se ejecutarán en "32 bit".
Si está ejecutando Windows de 64 bits, entonces está ejecutando un marco de 64 bits, pero el IL que se está ejecutando en la parte superior del marco no difiere (de forma predeterminada) del de IL de 32 bits.
En resumen: no importa si está ejecutando Windows de 32 bit o 64 bit ya que .NET framework lo abstrae del código C#/VB.
El marco Microsoft.Win32 se refiere a las API nativas dentro de Windows. A falta del nombre realmente malo que Microsoft le ha dado, no tiene nada que ver con Windows de 32 bits frente a 64 bits.
Por cierto, hay algunas cosas que no puede hacer con la versión de 64 bits del marco: por ejemplo, no hay un controlador de base de datos JET en el marco de 64 bits.
Por la misma razón, tenemos binarios de 64 bits almacenados en la carpeta system32
en Windows de 64 bits.
Básicamente, eso es porque las cosas en Microsoft.Win32
no son específicas de Windows de 32 bits. ¿Por qué deberían dañar la portabilidad sin ningún beneficio?
"Win32" es el nombre de la plataforma (es decir, el conjunto de API principal), independientemente de la bitness real del sistema operativo. En otras palabras, no te preocupes :)
- 1. ¿Por qué no hay sintaxis XPath para los nodos calificados de espacio de nombres?
- 2. qué espacio de nombres con anteponer ::, por ejemplo :: std :: vector
- 3. ¿Por qué mi log en el espacio de nombres estándar?
- 4. ¿Por qué hay URL en espacios de nombres XML?
- 5. ¿Por qué hay espacios de nombres XAML que son URLS?
- 6. ¿Qué es un espacio de nombres?
- 7. ¿Por qué Eclipse PHP no reconoce las declaraciones del espacio de nombres?
- 8. ¿Por qué Magento intenta llamar al espacio de nombres de Mage en lugar de a mi espacio de nombres personalizado?
- 9. espacio de nombres 'SharePoint' no existe en el espacio de nombres 'Microsoft'
- 10. ¿A qué espacio de nombres pertenece Response.Redirect?
- 11. ¿Por qué no puedo acceder a IsolatedStorage en el espacio de nombres System.IO?
- 12. ¿Por qué no podemos declarar alias de espacio de nombres dentro de una clase?
- 13. ¿Por qué los métodos de extensión no funcionan con alias de espacio de nombres?
- 14. ¿Por qué algunas funciones en <cmath> no están en el espacio de nombres estándar?
- 15. ¿Por qué el estilo y el diseño no usan el espacio de nombres de Android?
- 16. ¿Por qué no puedo definir los atributos de Android en el espacio de nombres predeterminado?
- 17. ¿Por qué System.Web.HttpUtility.UrlEncode no proporciona nombre de espacio de nombres en Visual C# 2008?
- 18. :: sin espacio de nombres
- 19. XElement.Descendants no funciona con espacio de nombres
- 20. ¿Por qué no hay Dictionary.TrimExcess()?
- 21. "plantillas" un espacio de nombres
- 22. Número ideal de clases por rama de espacio de nombres
- 23. ¿Hay un atajo de espacio de nombres PHP para esto?
- 24. El tipo o espacio de nombres 'LINQ' no existe en el espacio de nombres 'System.Data', etc
- 25. ¿Por qué no hay forma de deshacer "usar" en C++?
- 26. problemas de espacio de nombres
- 27. ¿Qué haría realloc si no hay espacio de memoria secuencial?
- 28. JavaScript Espacio de nombres
- 29. por qué las bibliotecas clojure no intentan utilizar nombres únicos para nombres de funciones comunes
- 30. Espacio de nombres anónimo anidado?
¡Excelente respuesta! ¿Hay alguien que rastree las diferencias de 64 bits en .NET? --- tal vez un Blog? – rasx
Ninguna que he visto. Yo también estaría interesado en esto. – rein