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

Posted

技术标签:

【中文标题】无法加载文件或程序集\'System.Web.WebPages.Razor,版本 = 3.0.0.0【英文标题】:Could not load file or assembly 'System.Web.WebPages.Razor, Version=3.0.0.0无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.0.0.0 【发布时间】:2013-11-14 19:05:07 【问题描述】:

我想使用外部登录,所以我通过包管理器安装了 Oauth:

 PM> Install-Package Microsoft.AspNet.WebPages.OAuth

然后我安装后出现此错误然后我安装剃须刀:

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

【问题讨论】:

当你说一个 aspp.net 应用程序时;你是说网络表格吗?因为 MVC 仍然是一个 asp.net 应用程序。顺其自然; Razor 是一种 MVC 脚本语言。如果您不是在构建 MVC 应用程序;那么难怪你有问题。诚实地;你自己回答了这个问题。 你的项目是基于.net4的吗? Razor 3 的许多组件可能基于 4.5。检查我的答案。 【参考方案1】:

提前为这个低技术建议道歉,但在与 NuGet 斗争了几个小时后终于对我有用的另一个选择是重新创建一个新的空项目,在我的例子中是 Web API,然后只是复制胆量将您旧的、现已损坏的项目转移到新的项目中。我花了大约 15 分钟。

【讨论】:

15 分钟 vs 几个小时的头痛,太棒了 类似地,在 TFS 项目中,我搁置了我的更改,隐藏了分支,删除了现有文件,重新映射了项目,获取了最新版本,然后从搁置集中重新合并。我认为这与您建议的想法相同。我花了一个小时以这种方式重置所有内容,在我与本地环境中的所有 NuGet 包苦苦挣扎之后,我花了将近一天的时间。【参考方案2】:

您已升级到 Razor 3。请记住,VS 12(直到更新 4)不支持它。通过这些步骤从 nuget 安装 Razor 3 或降级

geekswithblogs.net/anirugu/archive/2013/11/04/how-to-downgrade-razor-3-and-fix-the-issue-that.aspx

【讨论】:

您好,我安装了 razor 3,但没有添加 System.Web.WebPages.Razor 版本 3,我仍然有异常 Razor 3 依赖项基于 .net 4.5。如果您的项目部署在 .net 4 中,则无法使其工作。在 MVC 4 中(这也适用于 .net 4,我们使用 Razor 2。如果您遇到问题,那么我只是建议您在 .net 中部署您的应用程序4(mvc4),它会很简单:) 如果您的问题仍然存在,请备份并删除 mvc 4 附带的所有内容。运行此 nuget nuget.org/packages/UpgradeMvc3ToMvc4,您的项目将在 MVC 4 中运行。【参考方案3】:

另一个选项是更新 Microsoft.AspnNet.Mvc NuGet 包。请小心,因为 NuGet 更新不会更新 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>

【讨论】:

信不信由你...这是最终让我的 MVC 应用程序使用 Razor 3.2.6 更新到 MVC 5.2.6 的答案。如果您有区域,则需要更改区域的每个视图文件夹中的 web.config 文件,如果有,还需要更改根视图文件夹。【参考方案4】:

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

Update-Package -reinstall Microsoft.AspNet.Mvc

【讨论】:

【参考方案5】:

对我有用的是:右键单击项目属性,然后管理 Nugget 包 然后选择更新选项卡,然后选择 Microsoft.AspNet.Razor 然后降级到版本 3.0.0

【讨论】:

【参考方案6】:

我走得更远了。我的项目非常大,我拒绝创建一个新项目,然后将所有内容从旧项目转移到新项目。无聊。

我的解决方案 我强制 NUGET 重新安装所有内容,我从 'Import Project=...' 下的项目文件中获取名称,删除了 '.props' 扩展名。在 V/Studio 工具菜单上打开 NUGET 控制台:

关于我的项目(部分)

Update-Package -reinstall Microsoft.Net.Compilers.Toolset
Update-Package -reinstall Microsoft.Net.Compilers
Update-Package -reinstall Microsoft.CodeAnalysis.Analyzers
Update-Package -reinstall Microsoft.TypeScript.MSBuild
Update-Package -reinstall EntityFramework
Update-Package -reinstall Microsoft.TypeScript.Default
Update-Package -reinstall Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Update-Package -reinstall Microsoft.Common
Update-Package -reinstall Microsoft.TypeScript.MSBuild

最后 然后,在同一个项目文件中,我删除了所有包含 &lt;Error Condition="!Exists('packages.... 的行以避免编译器 missing package 失败。

我的项目和解决方案现已启动并运行。

【讨论】:

以上是关于无法加载文件或程序集'System.Web.WebPages.Razor,版本 = 3.0.0.0的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一

寻找解决策略:无法加载文件或程序集[重复]