当前位置: 首页 > 知识库问答 >
问题:

无法加载文件或程序集“系统.Web.WebPages.Razor,版本=3.1.1

应子真
2023-03-14

我正在尝试将一个项目从MVC 4/EF 5升级到MVC 5/EF 6。我将框架从4.5更新到4.5.1,然后从Nuget更新了解决方案MVC(4.0.30506.0到5.1.1)和EntityFramework(5到6.1.1)。这引入了Razor依赖项(2.0.30506.0到3.1.1)和WebPages(2.0.30506.0到3.1.1)。我编辑了Project and Views文件夹web.config以反映更改,并从csproj中删除了GUID。

当我在调试中运行站点时,在-section name = " host " type = " System . config上加载视图文件夹web.config时出错。Web .网页. razor . configuration . host section-line。

为system.web.webPages.razor/host:创建配置节处理程序时出错。无法加载文件或程序集。Web .网页. Razor,版本=3.1.1 "

它在上一行(System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup)或根web.config中的Razor引用上没有问题。遗憾的是,堆栈跟踪无法标识调用程序集。

调用程序集:(未知)。

所有相关文件都包含在下面。

有没有人知道问题是什么,更重要的是如何解决它。我只更新了最基本的NuGet包:MVC和实体框架。

        packages.config:

…  
  <package id="EntityFramework" version="6.1.0" targetFramework="net451" />
  <package id="jQuery" version="2.0.2" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="jQuery.Validation" version="1.11.1" targetFramework="net45" />
  <package id="knockoutjs" version="2.2.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Mvc.FixedDisplayModes" version="5.0.0" targetFramework="net451" />
  <package id="Microsoft.AspNet.Razor" version="3.1.1" targetFramework="net451" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
…
  <package id="Microsoft.AspNet.WebPages" version="3.1.1" targetFramework="net451" /> 
<!-- oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" -->
…

          web.config:       root

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
…
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.1" newVersion="5.1.1" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.1.1" newVersion="3.1.1" />       </dependentAssembly>


          web.config:       Views folder

   <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
 <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />     </sectionGroup>
…
 <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
…
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=5.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>

          ERROR PAGE:

配置错误说明:处理处理此请求所需的配置文件时出错。请查看下面的特定错误详细信息并相应地修改配置文件。

解析器错误消息:为 system.web.webPages.razor/host 创建配置节处理程序时出错:无法加载文件或程序集“System.Web.WebPages.Razor,版本=3.1.1,区域性=中性,公钥令牌=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040)

源错误:

Line 4:    <configSections>
Line 5:      <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
Line 6:        <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 7:        <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.1.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
Line 8:      </sectionGroup>

源文件: C:\项目\视图\web.config行: 6

程序集加载跟踪:以下信息有助于确定程序集“System.Web.WebPages.Razor,版本=3.1.1,区域性=中性,公钥令牌=31bf3856ad364e35”的原因。

=== 预绑定状态信息 === 日志:显示名称 = System.Web.WebPages.Razor,版本=3.1.1,区域性=中性,公钥令牌=31bf3856ad364e35(部分) WRN:为程序集提供了部分绑定信息:WRN:程序集名称:System.Web.WebPages.Razor,版本=3.1.1,区域性=中性,公钥令牌=31bf3856ad364e35 |域 ID:4 WRN:仅提供程序集显示名称的一部分时,将发生部分绑定。WRN:这可能会导致绑定程序加载不正确的程序集。WRN:建议为程序集提供完全指定的文本标识 WRN:由简单名称、版本、区域性和公钥标记组成。WRN:有关此问题的更多信息和常见解决方案,请参阅白皮书 http://go.microsoft.com/fwlink/?LinkId=109270。日志:应用程序库 = file:/// C:\项目 / 日志:初始专用路径 = C:\项目 \bin

日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:C:\Project\web。配置日志:使用主机配置文件:C:\Users\xxx\Documents\IISExpress\config\aspnet。配置日志:使用C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config中的计算机配置文件。日志:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。日志:正在尝试下载新URLfile:///C:/Users/xxx/AppData/Local/Temp/TemporaryASP。NET文件/root/898b17f9/848c1fdf/System.Web.WebPages.Razor.DLL。日志:正在尝试下载新URLfile:///C:/Users/xxx/AppData/Local/Temp/TemporaryASP。NET文件/root/898b17f9/848c1fdf/System.Web.WebPages.Razor/System_Web.WebPages.Razor DLL。日志:正在尝试下载新的URL文件:///C:\Project/bin/System.Web.WebPages.Razor.DLL。警告:比较程序集名称导致不匹配:次要版本错误:未能完成程序集的安装(hr=0x80131040)。探测终止。

版本信息:微软。NET框架版本:4 . 0 . 30319;ASP.NET版本:4.0.30319.18446

共有3个答案

符佐
2023-03-14

System.Web也有类似问题。当我将我的项目从Windows 7复制到Windows 8机器上并更新包时,Mvc通过删除对System.Web的引用解决了这个问题。Mvc,并通过浏览到5.2版将其添加回:

C:\程序文件(x86)\微软ASP.NET\ASP.NETWeb Stack 5\软件包\微软. AsNet. Mvc.5.2.0\lib\net45

它也在:C:(my solution folder)\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45

点击详情:

通过在Visual Studio 2013 Express中转到解决方案资源管理器窗口,然后单击引用,右键单击System. Web. Mvc并删除来解决这个问题。然后我通过右键单击引用和“添加引用…”来添加引用,但是,我没有以正常的方式选择程序集来添加它,我单击浏览并找到版本5.2

陆英毅
2023-03-14

决定不值得试图弄清楚这些噩梦般的依赖关系。我恢复了项目的备份,并从包管理器控制台 (PMC) 手动更新了 MVC 和实体框架,其中包含未调用 Razor 3.1.1 依赖项的旧版本。

安装包微软。AspNet . Mvc-版本5.0.0

安装-包实体框架-Version 6.0.0

注意:如果您使用DbContext. EntityState方法,它已从System. Data移动到System. Data. Entity,请酌情更新您的用法。

如果您有简单的成员资格,您将需要安装Microsoft. ASPNet. WebPage. WebData(请参阅ASP.NETMVC 5与WebMatrix简单成员资格提供程序不兼容吗?),如果您在项目中有OAuth(MVC4模板将OAuth安装到项目中,我没有使用它,所以我能够删除它。如果您正在使用它,您将有更多的工作要做),您必须卸载OAUTH(WebData对OAUTH有依赖问题)。

从NuGet卸载Microsoft网页OAuth库

从PMC安装包Microsoft. aspNet. WebPage. WebData

请确保按照适合您的项目的步骤进行操作:将MVC 4升级到5 http://www . ASP . net/MVC/tutorials/MVC-5/how-to-Upgrade-an-aspnet-MVC-4-and-we b-API-Project-to-aspnet-MVC-5-and-we b-API-2

--或者--

如果要尝试更新所有程序包,请按照以下步骤操作:

从Nuget卸载Microsoft WebPages OAuth库(如果使用简单会员资格,请参见上面)

不得不单独更新:“微软ASP.NET Web API客户端库和核心库”和“系统”。“OData的空间”

全部更新

来自PMC Install-Package Microsoft.AspNet.WebPages.WebData (SimpleMember,见上文)

(请参阅上面的 DbContext.EntityState)

(web.config-root, add key="web的网页:版本"值="3.0.0.0";见上文升级MVC 4到5;其他更改是自动进行的)

(视图 web.config 需要手动更改)

(然后能够成功构建和打开项目,但是当它访问数据库时,它需要更新。(来自 PMC 更新数据库。它失败了,“创建索引 [xxx] ON [dbo].xxxx” “System.Data.SqlClient.SqlException (0x80131904):操作失败,因为表”dbo.xxx“上已存在名为”xxxx“的索引或统计信息。但随后我能够成功访问数据库)

敖淮晨
2023-03-14

我能够通过更新我的视图文件夹的 web.config 中的 configSection 来解决此问题,以匹配我在 packages.config 中的内容。在我的实例中,我需要将 Razor 的版本调整为 3.2.7 版

--WEB.CONFIG文件

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

包裹。配置

<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
 类似资料:
  • 我在我的项目中使用的是umbraco 4.11.3。我的项目在Windows 7上运行良好,并在visual studio 2012上运行。但它在Win 8中从visual studio 2012运行时并不工作! 错误是: 无法加载文件或程序集“System.Web”。Mvc,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e

  • 问题内容: 我正在使用c#和数据库MySQL开发桌面应用程序。当我在计算机上安装其安装程序时,它可以正常工作,但是当我在其他计算机上安装它的安装程序时,尝试访问数据库时会出现以下异常。我用来与MySQL通信。 无法加载文件或程序集“ MySql.Data,版本= 6.2.2.0,区域性=中性,PublicKeyToken = c5687fc88969c44d”或其依赖项之一。该系统找不到指定的文件

  • 问题内容: 我完全不知所措-我仍然什至没有真正理解的地方遇到超级奇怪的问题…我正在运行Entity Framework 4.1,MySql 5.xx和MySql Connector为6.4.4版-一切正常但是在本地,只要我上传到服务器,就会收到: 我很困惑,我很肯定我在Bin目录中有MySql 6.4.4 dll,我的Web.config也对版本6.3.6进行了零引用- 我已经在整个项目中(使用全

  • 问题内容: 更新到新软件包Microsoft.EntityFrameworkCore.SqlServer 1.1.2之后,尝试创建DBContext时出现错误: 发生System.IO.FileLoadException HResult = 0x80131040 消息=无法加载文件或程序集’Microsoft.Extensions.DependencyInjection.Abstractions,

  • 在 win7 上,我的应用程序工作正常。但是当我尝试在win8上运行它时,我收到一个错误。 无法加载文件或程序集“系统.Web.WebPages.Razor,版本=2.0.0.0 System.Web.WebPages.Razor.dll 在发布期间是本地复制的。如果这很重要,我不久前从 mvc4 迁移到 mvc5。 堆栈跟踪: [FileLoadException: 无法加载文件或程序集 'Sy

  • 我使用 ASP.NET MVC3。NET4 框架。我的项目正在本地工作,但我将文件发送到服务器并且在那里不起作用。在我的服务器文件中现在是v2。如果我将 v2 文件发送到服务器,我会得到 无法加载文件或程序集“System.Web.WebPages”。剃刀,版本=1.0.0.0,。。。 错误