【问题标题】:ASP.NET MVC 3.0 Build Views as 64 bitASP.NET MVC 3.0 将视图构建为 64 位
【发布时间】:2011-06-09 02:22:29
【问题描述】:

我需要构建一个 MVC 3.0 站点并专门针对 x64。我在尝试构建我的 MVC 3.0 站点时遇到问题,其中 Platform Target 设置为 x64,MvcBuildViews 设置为 True。一切都很好,直到它尝试编译视图。如果我将 Platform Target 设置为 AnyCPU,一切都会编译,但是当设置为 x64 时,我会收到此错误:

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

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

我无法在网上找到有关上述错误的任何信息,只是它处理不匹配的 DLL(一个 x32,一个 x64),但这没有意义,除非视图构建引擎是 32 位或其他东西。

任何能指引我正确方向的提示都将不胜感激。感谢阅读!!

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    我收到了 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 在站点首次加载时编译视图。它没有完全预编译,但它会工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多