无法加载文件或程序集'System.Web.WebPages'

时间:2012-06-28 14:28:03

标签: c# asp.net-mvc-3

我之前遇到过这个问题,但我需要做的就是清理和重建项目。现在这似乎不再起作用了。当我启动我的Asp.Net MVC3项目调试器时,该站点在我的浏览器中打开。我没有在浏览器中显示第一页,而是出现此错误

Parser Error Message: Could not load file or assembly 'System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Source Error: 
Line 31:         <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Line 32:         <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Line 33:         <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Line 34:       </assemblies>
Line 35:     </compilation>

我似乎无法弄清楚如何解决这个问题。有什么想法吗?

7 个答案:

答案 0 :(得分:18)

我有这个问题。也许是因为我在MVC v3的顶部安装了.NET MVC v4,不确定。

无论如何,我从项目中删除了System.Web.WebPages引用。然后在“添加引用”对话框的.NET选项卡中,列出了两个System.Web.WebPages引用,版本1.0.0.0和2.0.0.0。我确保添加版本1.0.0.0,因为那是一个缺失的版本。

enter image description here

答案 1 :(得分:18)

我的解决方案是转到我的服务器并在服务器上安装网页版本2.

转到http://www.microsoft.com/en-us/download/details.aspx?id=34600

下载该软件包并运行它。

就这么简单。

答案 2 :(得分:8)

为我工作:

  1. 工具 - &gt; NuGet包管理器 - &gt;管理解决方案的NuGet包

  2. 浏览

  3. 搜索&#34; Microsoft.AspNet.WebPages&#34;

  4. 确保解决方案中的所有项目都具有最新版本。

答案 3 :(得分:6)

当我拥有它时,我在这个问题上划了一会儿。最后我注意到我在web.config的“runtime”部分中有以下部分。

<runtime>
 . . .
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
. . .
</runtime>

如您所见,这是指程序集的第2版,它与您在web.config的system.web / compilation / assemblies部分中也有的以下代码不匹配。

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

项目的References中引用的实际程序集确实是v1.0.0.0,因此我将上面的第一个代码块更改为以下代码,它立即修复了问题。我不确定这个错误到底是怎么回事。

<runtime>
 . . .
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
. . .
</runtime>

答案 4 :(得分:4)

转到菜单:“工具/ Nuget包管理器/包管理器控制台”

运行命令install-package Microsoft.AspNet.WebPages

答案 5 :(得分:1)

我有这个问题,我所要做的就是更改外部参考的属性:特定版本从 True 改为 False

之后,项目再次构建。

答案 6 :(得分:0)

我为MVC5提出了同样的问题。

首先从项目的参考中检查 System.Web.WebPages 程序集。

  1. 如果未找到,则通过从项目参考中选择添加参考来添加。
  2. 如果找到,则该引用的属性的任何检查版本。然后检查项目 web.config 文件。可能这两个版本都不匹配。
  3. 对我来说,我添加了2.0.0.0版的引用。但我的web.config文件从

    引用它

    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />

    我将其更改为

    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />

    它适用于MVC5。

    请检查附件中突出显示的部分以获得更多许可。

    System.Web.WebPages