无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0

Jea*_*amp 54 dependencies asp.net-4.0 razor asp.net-mvc-3

我刚刚升级了MVC 3项目(ASP.net 4)中的包,现在我在访问该项目中的页面时收到以下错误消息:

'/ MyApplication'应用程序中的服务器错误.

无法加载文件或程序集"System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性公钥= 31bf3856ad364e35"或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

程序集加载跟踪:下列信息有助于确定程序集"System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性公钥= 31bf3856ad364e35"无法加载.

===预绑定状态信息===日志:用户= IIS APPPOOL\ASP.NET v4.0日志:DisplayName = System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase = file:/// C:/.../ LOG:初始PrivatePath = C:...\bin调用程序集:Microsoft.Web.Helpers,Version = 2.0.0.0,Culture = neutral ,PublicKeyToken = 31bf3856ad364e35.===日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:C:...\web.config日志:使用主机配置文件:C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config日志:使用C中的机器配置文件: \的Windows\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config中.日志:后策略引用:System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64 /v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPages.Razor.DLL.日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files /.../ cb62a7b2/327a0353/System.Web.WebPages.Razor/System .Web.WebPages.Razor.DLL.日志:新的URL文件的尝试下载:/// C:/LeGroupeHtmSVN/.../UpDir.Web/bin/System.Web.WebPages.Razor.DLL.警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集的设置(hr = 0x80131040).探测终止.

堆栈跟踪:

[FileLoadException:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)]
Microsoft.Web.Helpers.PreApplicationStartCode.Start()+ 0

[InvalidOperationException:预应用程序启动初始化方法启动类型Microsoft.Web.Helpers.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040).]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)+11711966
System.Web.Compilation.BuildManager.CallPreStartInitMethods()+465
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,Exception appDomainCreationException)+1167

[HttpException(0x80004005):预应用程序启动初始化方法启动类型Microsoft.Web.Helpers.PreApplicationStartCode引发异常,并显示以下错误消息:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 2.0 .0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040).]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11700896 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+ 4869125

-------------------------------------------------- ------------------------------版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272

在我的web.config文件中,在我的应用程序中,我正在引用System.Web.WebPages.Razor v1.0.0.0:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
  </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我甚至不知道我是否可以使用带有.Net 4的System.Web.WebPages.Razor v2.0.0.0.

现在,我如何找出引用System.Web.WebPages.Razor v2.0.0.0的内容?

Moh*_*mad 57

很简单.在Nuget Package Manager控制台中:

更新包Microsoft.AspNet.Mvc -Reinstall

  • 对我来说,这种方法重新安装了 Oauth 和一堆其他膨胀,但没有解决问题。 (2认同)

Dig*_*mar 50

当我执行"删除未使用的引用"时,就会出现此问题.该网站仍然在我的本地机器上工作,但在发布后没有在服务器上工作.

删除未使用的引用

我通过执行以下操作修复了此问题,

  1. 在Visual Studio中打开"包管理器控制台"
  2. 卸载 - 打包Microsoft.AspNet.Mvc
  3. 安装包Microsoft.AspNet.Mvc

  • 点击删除未使用的参考文献就像用你的手从你的厨房水槽处理器中取出剃刀刀片一样......真的很危险. (22认同)
  • 切勿触摸"删除未使用的参考".它是邪恶的,永远不会像宣传的那样起作用.它编码自杀. (11认同)

Dar*_*rov 27

我如何找出引用System.Web.WebPages.Razor v2.0.0.0的内容?

只需阅读您的异常堆栈跟踪:

Calling assembly : Microsoft.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Run Code Online (Sandbox Code Playgroud)

所以看来你正在使用的Microsoft.Web.Helpers依次依赖于System.Web.WebPages.Razor, Version=2.0.0.0.

  • 事实上,它依赖于System.Web.WebPages.Razor v2.0.0.0,它只在Release Candidate阶段,如果我安装它,它就会破坏我的应用程序.所以我现在的解决方案是恢复到以前版本的Microsoft.Web.Helpers. (2认同)

use*_*733 8

在经历了很多痛苦,谷歌搜索和拔毛后,我最终使用nuget卸载了MVC 4,从web配置中删除了对MVC,剃须刀和基础设施的所有引用,从bin文件夹中删除了dll - 然后使用nuget重新安装所有内容.花了更少的时间才弄清楚为什么dll不匹配.


Tom*_*bes 7

在ASP.NET MVC 4中,命名空间不是System.Web.WebPages.Razor,而是System.Web.Razor

这对我有用,改变你的web.config.