asp.net-mvc-3 - 编译错误: "higher version than referenced assembly "

标签 asp.net-mvc-3 visual-studio-2010 asp.net-mvc-4

我的 View 页面出现错误,因此我将 Visual Studio 更新为 mvc4,尽管我正在使用 mvc3。我第一次使用 NuGet 更新,但它不起作用,所以我通过独立 MVC4 更新。所以它起作用了。但是当我尝试运行 MVC3 项目时,它给出了以下错误:

CS1705: Assembly 'MVC3Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

谁能帮我解决这个问题吗?

最佳答案

在 Views 文件夹的 web.config 文件中,system.web.webPages.razor 下有 host 元素

对于 MVC3 项目,这应该如下所示:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

对于 MVC4 来说是:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

您还需要检查 MVC3 的页面元素如下

<pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>

和sectionGroup元素:

<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>

在项目根目录的主 web.config 中,您需要确保 assembly 元素如下:

<assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>

还有更多更改需要进行 - 最好的办法是查看 MVC3 项目和 MVC4 项目的 web.config 文件,并删除您的项目中不应该存在的内容。

关于asp.net-mvc-3 - 编译错误: "higher version than referenced assembly ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850643/

相关文章:

c++ - Visual Studios 2008 中 C++ 开发中的链接错误

c# - 将 JSON 字符串发送到 MVC Controller 失败

asp.net-mvc - 带区域参数的 MVC 重定向到操作

asp.net-mvc-3 - ASP.NET MVC - 在非 Controller 类中访问 Cookies 数据

c# - Visual Studio 2010 - 无法单步执行 .NET Framework 4 源 (PresentationCore.dll)

c++ - 我的电脑缺少 SDL.dll - VS 2010

html - 显示设置为内联 block 的元素在 MVC for 循环中不起作用

c# - 如何在我的 ASP.NET MVC 5 项目中获取 “Add Controller” 和 “Add View” 菜单选项?

asp.net-mvc-3 - Asp.Net MVC 3 - 登录页面在保护站点时没有 css 布局

wpf - 在 MVC 中重用 WPF ViewModel 是否可行?