PresentationCore.dll y WindowsBase.dll están ambos incluidos con Microsoft .NET Framework 3.0, y dos versiones de cada archivo DLL se instalan en el disco:PresentationCore y WindowsBase dlls en ambos entornos x64 y x86
- Un versión x64 en C: \ archivos de programa \ conjuntos de referencia \ Microsoft \ Framework \ v3.0
- Una versión x 86 en C: \ archivos de programa (x86) \ Referencia Asambleas \ Microsoft \ Framework \ v3.0
Hasta agregar referencias a estos archivos DLL, nuestra aplicación web ASP.NET fue capaz de compilarse para "cualquier CPU" y se ejecutará en el modo de 32 bits o de 64 bits sin problemas. Después de añadir una referencia a, por ejemplo, PresentationCore a través del estándar "Agregar referencia" de diálogo (Agregar referencia -> NET -> PresentationCore), la aplicación web falla cuando está en modo de 64 bits con el siguiente error:
Could not load file or assembly 'PresentationCore' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Claramente esto se debe a que el grupo de aplicaciones de 64 bits está intentando, y en su defecto, cargar una versión de 32 bits del dll de PresentationCore.
Ahora, estoy un poco confundido por esto ...
- otros archivos DLL de .NET Framework parecen cambiar entre su x64 y x86 versión sin problemas (carga de Microsoft.NET/Framework64 o Microsoft.NET/Framework, respectivamente). ¿Por qué PresentationCore y WindowsBase son diferentes?
- ¿Por qué parece que Visual Studio solo me ofrece la versión de 32 bits en la pestaña ".NET" en el cuadro de diálogo "Agregar referencia"? Si quiero la versión de 64 bits, tengo que "buscarla".
- ¿Hay alguna forma simple de seleccionar automáticamente la dll correcta, como parece suceder con otras bibliotecas .NET Framework?
Siempre podemos escribir un poco de MSBuild XML que intercambiar automáticamente referencias en tiempo de construcción basado en el valor de bits del entorno de destino, pero que parece como algo que no deberíamos tener que hacer para DLL de .NET Framework. ¿Lo que da?
Gracias!
¿Está seguro de que no agregó la referencia usando Examinar? ¿Has intentado eliminarlo y luego volver a agregarlo? – svick
Sí, estoy seguro. Y sí, hemos intentado eliminarlo y volver a agregarlo varias veces. –
Resolví este problema al habilitar "Habilitar aplicaciones de 32 bits" en la configuración avanzada del conjunto de aplicaciones. – Nippysaurus