C# 无法加载文件或程序集';System.Web.WebPages.Razor,版本=3.0.0.0

C# 无法加载文件或程序集';System.Web.WebPages.Razor,版本=3.0.0.0,c#,asp.net,razor,C#,Asp.net,Razor,我想使用外部登录,因此我通过package manager安装了Oauth: PM> Install-Package Microsoft.AspNet.WebPages.OAuth 安装后出现此错误,然后安装razor: PM> Install-Package Microsoft.AspNet.Razor 但我仍然有这个例外。此外,我的应用程序是asp.net应用程序,而不是MVC应用程序。谢谢你的帮助 [FileNotFoundException: Could not loa

我想使用外部登录,因此我通过package manager安装了Oauth:

 PM> Install-Package Microsoft.AspNet.WebPages.OAuth
安装后出现此错误,然后安装razor:

PM> Install-Package Microsoft.AspNet.Razor
但我仍然有这个例外。此外,我的应用程序是asp.net应用程序,而不是MVC应用程序。谢谢你的帮助

[FileNotFoundException: Could not load file or assembly 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.]
   Microsoft.Web.WebPages.OAuth.PreApplicationStartCode.Start() +0

您已升级到Razor 3。记住VS12(直到更新4)不支持它。从nuget安装剃须刀3或通过以下步骤将其降级


对于这项技术性的建议,我提前表示歉意,但另一种选择是重新创建一个新的空项目,即Web API(在我的情况下),然后将旧项目(现在已损坏的项目)的精华复制到新项目中,这一选择在与NuGet斗争数小时后终于奏效了。我花了大约15分钟。

另一个选项是更新Microsoft.AspnNet.Mvc NuGet包。请小心,因为NuGet update不会更新Web.Config。您应该将所有以前的版本号更新为更新的版本号。例如,如果您从asp.net MVC 4.0.0.0更新到5.0.0.0,则应在Web.Config中替换此选项:

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

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

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

在Visual Studio中使用
NuGet Package Manager
控制台进行更新

Update-Package -reinstall Microsoft.AspNet.Mvc

对我有用的是:右键单击项目属性,然后管理Nugget包
然后选择“更新”选项卡,然后选择“Microsoft.AspNet.Razor”,然后当您说一个aspp.net应用程序时,降级到3.0.0版

;你是说网络表单吗?因为MVC仍然是一个asp.net应用程序。就其本身而言;Razor是一种MVC脚本语言。如果您没有构建MVC应用程序;那么你有问题也就不足为奇了。真的你自己回答了这个问题。你的项目基于.net4吗。Razor 3的许多组件可能基于4.5。检查我的答案。您好,我安装了razor 3,但没有添加System.Web.WebPages.razor版本3,我仍然有例外razor 3依赖项基于.net 4.5。如果您的项目部署在.NET4中,则无法使其工作。在MVC 4中(这在.net 4中也适用),我们使用Razor 2。如果您遇到问题,那么我只是建议您在.net 4(mvc4)中部署应用程序,它将简单地工作:)如果您的问题仍然存在,则进行备份并删除MVC 4附带的所有内容。运行这个nuget,您的项目将在MVC中运行4.15分钟,而不是几个小时,这很好。同样,在TFS项目中,我搁置了更改,隐藏了分支,删除了现有文件,重新映射了项目,获得了最新版本,然后从搁置集中重新合并。我想这和你的建议是一样的。我花了一个小时的时间来重新设置所有的东西,几乎一天的时间都在与NuGet软件包在我的本地环境中被劫持进行斗争。信不信由你。。。这就是最终让我的MVC应用程序用Razor3.2.6更新到MVC 5.2.6的答案。如果有区域,则需要更改区域的每个视图文件夹中的web.config文件,如果有,还需要更改根视图文件夹。