ASP.NET MVC 3.0将视图构建为64位

问题描述

| 我需要建立一个MVC 3.0站点,并专门针对x64。我在构建平台目标设置为x64且MvcBuildViews设置为True的MVC 3.0网站时遇到问题。在尝试编译视图之前,一切都会构建良好。如果我将平台目标设置为Anycpu,则所有内容都会编译,但是当设置为x64时,会出现此错误: 无法加载文件或程序集\'Mvc64Bit \'或其依赖项之一。试图加载格式错误的程序。 通过创建空白MVC 3.0项目,卸载项目,编辑项目文件以将MvcBuildViews项设置为“ true”,重新加载项目,在项目的“构建属性”中将“平台目标”更改为,可以轻松地重新创建该项目。 x64,然后构建。 我无法在线找到有关上述错误的任何信息,只是它可以处理不匹配的DLL(一个x32,一个x64),但这除非视图构建引擎为32位或类似的东西,否则这是没有意义的。 任何指向我正确方向的提示将不胜感激。谢谢阅读!!     

解决方法

        我收到了Microsoft关于此问题的回复。我猜发生了什么事,Visual Studio调用了32位编译器,将网站编译为64位DLL。之后,它将再次调用32位编译器以获取视图。视图编译需要加载64位Web项目DLL,以从定义的模型中获取信息。这是“不正确格式”的来源。32位编译器尝试加载64位Web项目DLL。 现在,从Visual Studio命令提示符调用64位aspnet_compiler.exe可以正常工作。但是,我猜想,因为Visual Studio是32位应用程序,所以它无法加载64位编译器。我不确定有什么方法可以调用64位,即使有办法,Visual Studio可能也无法给出通常会发生的错误的详细列表(只是假设,我没有这样做)。知道Visual Studio是如何调用编译器的。。。一个简单的命令行执行有效,但是实际上它可以从VS代码内部加载DLL和调用) 因此,我的解决方法是将MVCBuildViews = true声明放入属性中。然后,我将MVCBuildViews = false放在\'Release | AnyCPU \'属性组中,并在站点首次加载时让IIS编译视图。它没有完全预编译,但是可以正常工作。