2011-05-27 17 views
5

Necesito construir un sitio MVC 3.0 y apuntar específicamente a x64. Tengo un problema al tratar de compilar mi sitio MVC 3.0 con el objetivo de plataforma configurado para x64 y MvcBuildViews establecido en True. Todo funciona bien hasta que intenta compilar las vistas. Si configuro el objetivo de la plataforma en AnyCPU, todo se compilará, pero cuando se establece en x64 aparece este error:ASP.NET MVC 3.0 Build Views as 64 bit

No se pudo cargar el archivo o ensamblado 'Mvc64Bit' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

Esto puede recrearse fácilmente creando un proyecto en blanco MVC 3.0, descargue el proyecto, edite el archivo del proyecto para establecer el elemento MvcBuildViews en "verdadero", vuelva a cargar el proyecto, cambie el Objetivo de plataforma en Propiedades de compilación del proyecto a x64 y luego construir No he podido encontrar nada sobre el error anterior en línea, solo que trata con archivos DLL no coincidentes (uno x32, uno x64) pero esto no tiene sentido a menos que el motor de compilación de vista sea de 32 bits o algo .

Cualquier sugerencia que apunte en la dirección correcta será GRANMENTE apreciada. ¡¡Gracias por leer!!

Respuesta

7

Recibí una respuesta de Microsoft sobre este tema. Supongo que lo que está sucediendo es que Visual Studio llama a un compilador de 32 bits que compila el sitio web en una DLL de 64 bits. Después de eso, vuelve a llamar al compilador de 32 bits para las vistas. La compilación de vistas necesita cargar las DLL de proyecto web de 64 bits para obtener información de los modelos definidos. Aquí es donde entra el "Formato incorrecto". El compilador de 32 bits intenta cargar los archivos DLL del proyecto web de 64 bits.

Ahora, llamar al aspnet_compiler.exe de 64 bits desde el símbolo del sistema de Visual Studio funciona perfectamente. Pero, supongo, dado que Visual Studio es una aplicación de 32 bits, no puede cargar el compilador de 64 bits. No estoy seguro de ninguna forma de llamar a los 64 bits, e incluso si hubiera una manera, Visual Studio probablemente no podría dar la buena lista de errores que normalmente tiene (solo una suposición porque no sé cómo Visual Studio llama al compilador ... funciona una simple ejecución de línea de comandos, pero tal vez cargue realmente el DLL y las llamadas desde dentro del código VS)

Por lo tanto, mi trabajo fue poner MVCBuildViews = verdadera declaración dentro de la propiedad. Luego coloco MVCBuildViews = false en el grupo de propiedades 'Release | AnyCPU' y dejo que IIS compile las vistas cuando el sitio se carga por primera vez. No está precompilando por completo, pero funcionará.