2011-05-27 44 views
5

我需要特别构建一个MVC 3.0站点和目标x64。我遇到了一个问题,试图构建我的MVC 3.0站点,并将Platform Target设置为x64,将MvcBuildViews设置为True。一切都很好,直到它试图编译视图。如果我将Platform Target设置为AnyCPU,则所有内容都将编译,但设置为x64时,出现此错误:ASP.NET MVC 3.0构建视图为64位

无法加载文件或程序集“Mvc64Bit”或其某个依赖项。试图加载格式不正确的程序。

这可以通过创建一个空白的MVC 3.0项目,卸载项目,编辑项目文件以将MvcBuildViews项目设置为“true”,重新加载项目,将项目的构建属性中的平台目标更改为x64 ,然后建立。

我一直没有能够找到任何关于上述错误的在线,只是它处理不匹配的DLL(一个x32,一个x64),但这没有任何意义,除非视图构建引擎是32位或某些东西。

任何提示指向我在正确的方向将非常感激。谢谢阅读!!

回答

7

我收到了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调用编译器...一个简单的命令行执行工作,但也许它实际上加载了DLL和来自VS代码内部的调用)

因此,我的工作是将MVCBuildViews = true声明放入属性中。然后我把MVCBuildViews = false放在'Release | AnyCPU'属性组中,我只是让IIS在网站第一次加载时编译视图。这不是完全预编译,但它会工作。