walker full español dependency check .net dll x86 64bit x86-64

.net - full - dll 32 or 64 bit



¿Puede una aplicación x64 usar ensamblajes x86, y viceversa? (2)

Mi aplicación está construida como una aplicación x64. Después de pasar a VS2010, tuve algunos problemas que parecen estar relacionados con alguna discrepancia x64 / x86 en dlls a los que se hace referencia. Ahora me estoy moviendo para apuntar .NET4, y recibo incluso más problemas similares .

Mi pregunta es: ¿Qué precauciones debo tomar con respecto a la mezcla de x64 y x86? ¿Se puede hacer? Pensé que las aplicaciones x64 deberían poder usar x86 dlls sin problemas. ¿No? ¿Qué hay de la otra manera? ¿Puede una aplicación x86 hacer referencia a una x64 dll, siempre que se ejecute en una plataforma x64? ¿Cuáles son los peligros que debo tener en cuenta?


No, un proceso de 64 bits solo puede cargar archivos DLL de 64 bits y un proceso de 32 bits solo puede cargar archivos DLL de 32 bits. Lo que probablemente está pensando es que un sistema operativo de 64 bits puede ejecutar procesos de 32 bits.

El principal problema con .NET es que, antes de VS2010, los proyectos ejecutables tenían como predeterminado "AnyCPU", lo que significa que se cargaría en el formato "nativo" del sistema operativo en el que se ejecuta (así que 32 bits para las versiones de 32 bits de Windows y 64 bits para versiones de 64 bits de Windows). El problema con eso es que si probó su aplicación en Windows de 32 bits (por ejemplo), podría romperse si carga archivos DLL de 32 bits e intenta ejecutar Windows de 64 bits.

En VS2010, predeterminaron todos los proyectos ejecutables para que sean "x86" (es decir, 32 bits) de forma predeterminada lo que (en su mayor parte) mitiga el problema.


Puede ejecutar aplicaciones x86 en un sistema operativo de 64 bits utilizando la emulación WOW32. Algunas trampas que he encontrado: no se pueden mezclar y combinar 32/64 en el mismo proceso. Por lo tanto, si tiene la intención de ejecutar IIS como 64, todos los ensamblajes deben tener 64, de lo contrario, deberá ejecutar el modo de 32 bits. 64 bit ayuda a algunas aplicaciones más que a otras. Ejecutar la versión de SQL de 64 bits ofrece varias ventajas sobre la versión de 32 bits, la mayor ventaja es que puede instalar más de 4 GB de memoria en el servidor de destino y que SQL podrá usar más de 4 GB de memoria. No beneficia tanto a IIS porque IIS generalmente no puede usar más de 3 gb de memoria. Mi consejo sería asegurarme de que su servidor SQL / os / versión sea 64 si es posible. No va a hacer un. Gran diferencia si los otros servidores tienen 64 pero normalmente es más fácil trabajar con ellos y encontrar versiones de 32 bits.