编译错误:“比引用的程序集更高版本”

时间:2013-02-13 09:51:15

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

我的视图页面出错,所以我将视觉工作室更新为mvc4,不过我正在使用mvc3。我第一次使用NuGet进行了更新,但它不能正常工作,我通过独立的MVC4进行了更新。所以它奏效了。但是,当我尝试运行MVC3项目时,它给了我以下错误:

  

CS1705:程序集'MVC3Project,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = null'使用'System.Web.Mvc,Version = 4.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'哪个更高   版本比引用程序集'System.Web.Mvc,Version = 3.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'

任何人都可以帮我吗?

5 个答案:

答案 0 :(得分:4)

在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中,您需要确保assemblies元素如下:

<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文件,并删除不属于您的内容。

答案 1 :(得分:1)

我对MVC的更高版本有完全相同的问题。通过Nugget更新了我的所有包后,问题就解决了。

答案 2 :(得分:0)

以下为我工作

安装 - 打包Microsoft.AspNet.Web.Optimization

答案 3 :(得分:0)

我工作的解决方案我删除了项目中提供错误的引用。

使用右键单击项目再次重新安装 - &gt;添加引用 - &gt;搜索Assembly的名称,然后再次添加。

对于这个问题,您必须在第一个项目引用下删除System.Web.Mvc并单击项目 - &gt;添加引用 - &gt;搜索System.Web.Mvc(你会看到现在是4.0.0.0)安装它。

答案 4 :(得分:-1)

您可以使用当时正在寻找的版本下载System.Web.Mvc.dll:

参考 - &gt;添加 - >浏览并选择您的文件。

这个解决方案对我有用!!

祝你好运