2

我的视图页面出现错误,所以我将我的 Visual Studio 更新为 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,版本 = 3.0.0.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35'

谁能帮我这个?

4

5 回答 5

4

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

对于 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 元素如下

<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>
        <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 文件,并删除不应该在你的东西。

于 2013-02-13T10:00:59.240 回答
1

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

于 2016-08-03T16:09:16.907 回答
0

以下对我有用

安装包 Microsoft.AspNet.Web.Optimization

于 2013-09-21T07:10:35.813 回答
0

对我来说有效的解决方案我删除了项目中给出错误的引用。

使用右键单击项目再次重新安装 -> 添加引用 -> 搜索程序集的名称,然后再次添加。

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

于 2015-12-28T07:59:16.853 回答
-1

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

参考 -> 添加 -> 浏览并选择你的文件。

这个解决方案对我有用!

祝你好运

于 2018-05-29T13:36:20.947 回答