2010-04-07 28 views
8

Estoy intentando compilar (usando Visual Studio ) un sitio web ASP.Net con la biblioteca Chilkat . La compilación falla debido a este error:¿Cómo compilar el sitio web de x64 asp.net?

Could not load file or assembly 'ChilkatDotNet2, Version=9.0.8.0, Culture=neutral, PublicKeyToken=eb5fc1fc52ef09bd' or one of its dependencies. An attempt was made to load a program with an incorrect format.

Me han dicho que este error se debe a un incumplimiento de la plataforma.

Lo extraño es que, aunque la compilación falla, el sitio funciona una vez que se accede desde un navegador. Mi teoría es que la compilación IIS usa el compilador csc.exe de la carpeta Framework64 (64 bit) mientras que Visual Studio usa el compilador csc.exe de la carpeta Framework (32 bit). Si esto es así, ¿cómo puedo configurar mi Visual Studio para que se ejecute con el compilador de 64 bits para sitios ASP.Net?

Esta es mi configuración actual de desarrollo:

  • Windows 7 (x64).
  • Visual Studio 2008 Pro (x86 por supuesto ...).
  • Biblioteca de Chilkat (x64)
  • IIS/Asp.net (x64).

Respuesta

25

El por qué:
Su sitio web (la parte administrada, probablemente todos de la misma no terceros) no se compila en modo de 32 o 64 bits, al menos no en la forma en que está pensando. La diferencia es que WebDevServer.exe (Una versión de Cassini) que Visual Studio usa para su servidor web es exclusivamente de 32 bits. Por lo tanto, solo carga archivos DLL compatibles de 32 bits.

IIS en una máquina de 64 bits puede funcionar en el modo de 32 o 64 bits (por defecto a 64 bits), dependiendo de los ajustes de configuración, por lo que no tiene problemas para cargar la aplicación.

Solución: Por desgracia, no hay muchas opciones aquí, I asked the same question a while ago. Su mejor opción es usar IIS para la depuración. Se configura así:

  • proyecto Web> Ajustes
  • "web" Tab
  • En Servidores, seleccione uso de IIS local Servidor Web
+0

En realidad, veo que ** compilación ** falla para tales proyectos (que OP parecía indicar) en 64 bits para 64 bits. (en Visual Studio ... pero el sitio funciona bien en IIS o en una versión de 64 bits de cassinidev) Nada es más frustrante que esperar hasta que su página web se cargue para descubrir que 'lint x = 1;' debe ser 'int x = 1; ' –

0

La solución es poner tanto de las DLL (x64 & x86 DLL) en el GAC y deje que cada aplicación decida dinámicamente cuándo usar la DLL x64 o x86 (por supuesto, tendrá que hacer referencia a la DLL GAC en su proyecto).

He hablado personalmente con el desarrollador de ChilkatDotNet2 y esta es una solución que ambos acordamos.

Cuestiones relacionadas