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

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

“/ MyApplication”应用程序中的服务器错误。

无法加载文件或程序集“System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。

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

源错误:

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

程序集加载跟踪:以下信息可以帮助确定程序集“System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”无法加载的原因。

===预绑定状态信息===日志:用户= IIS APPPOOL \ ASP.NET v4.0日志:显示名称= System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase = file:/// C:/…/ LOG:Initial PrivatePath = C:… \ bin调用程序集:Microsoft.Web.Helpers,Version = 2.0.0.0,Culture = neutral ,PublicKeyToken = 31bf3856ad364e35。 === LOG:这个绑定在默认的加载上下文中启动。 LOG:使用应用程序configuration文件:C:… \ web.config LOG:使用主机configuration文件:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config LOG:使用C: \的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。 日志:后策略引用:System.Web.WebPages.Razor,版本= 2.0.0.0,文化=中性,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。 警告:比较程序集名称导致不匹配:主版本ERR:无法完成程序集的设置(hr = 0x80131040)。 探测终止。

堆栈跟踪:

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

[InvalidOperationException:应用程序启动初始化方法启动typesMicrosoft.Web.Helpers.PreApplicationStartCode启动exception,并出现以下错误消息:无法加载文件或程序集“System.Web.WebPages.Razor,Version = 2.0.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35“或其依赖之一。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)。]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1方法)+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):预应用程序启动初始化方法启动typesMicrosoft.Web.Helpers.PreApplicationStartCode抛出一个exception,并显示以下错误消息:无法加载文件或程序集“System.Web.WebPages.Razor,Version = 2.0 .0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext上下文)+11700896 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext上下文)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)+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> 

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

现在,我如何找出引用System.Web.WebPages.Razor v2.0.0.0的是什么?

我怎么找出什么是引用System.Web.WebPages.Razor v2.0.0.0?

只要阅读你的exception堆栈跟踪:

 Calling assembly : Microsoft.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

所以看来你使用的是Microsoft.Web.Helpers ,依次取决于System.Web.WebPages.Razor, Version=2.0.0.0

这个问题开始时,我做了“删除未使用的引用”。 该网站仍然在我的本地机器上工作,但在发布后没有在服务器上工作。

删除未使用的参考

我通过下面的方法解决了这个问题,

  1. 在Visual Studio中打开“包pipe理器控制台”
  2. 卸载 – 打包Microsoft.AspNet.Mvc
  3. 安装包Microsoft.AspNet.Mvc

很简单。 在Nuget包pipe理器控制台中:

更新程序包Microsoft.AspNet.Mvc – 重新安装

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

这对我工作,改变你的web.config。

经过很多痛苦,谷歌search和头发拉,我结束了使用nuget卸载MVC 4,删除所有引用MVC,razor和基础设施从networkingconfiguration,从bin文件夹删除dll – 然后使用nuget重新安装一切。 花费更less的时间,然后试图找出为什么dll不匹配。

我使用Windows控制面板卸载ASP.NET MVC 4,然后通过运行AspNetMVC4Setup.exe (我从https://www.microsoft.com/en-us/download/details.aspx?id=30683获得; )重新安装它。 ,并为我解决了这个问题。

换句话说,我不需要使用Nuget或Visual Studio。

添加一个不必要的引用System.Web.Mvc后,我得到相同的错误。 我删除了所有可以find的参考,但似乎没有任何工作。 我终于删除了项目的bin文件夹,重build后错误消失了。

我也收到了这个错误,并尝试了一切我可以在网上find,它不会消失。 最后,我只是将MVC从5.2.3降级到4.0.40804。 我不喜欢这个解决scheme,因为最终我将需要使用MVC 5,但它现在工作。 希望这可以帮助别人。

在某些情况下,只需安装网页2来解决这个问题(解决我的情况 – 使用web API部署到本地网页)

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

短:
在你有一个纯粹的Web API项目的问题(因此不需要razor),尝试添加它,重build,然后将其删除。

很长的故事:
我有一个全新的纯Web API项目的问题,除了堆栈跟踪指向“System.Web.Mvc”作为调用程序集(见达林的答案)。 没有参考MVC,剃刀或类似的东西在我的项目,但…
我决定添加MVC包(AspNet.Mvc,AspNet.WebPages和AspNet.Razor)来检查是否有任何后续问题。
WebApi应用程序然后发射完美。 然后我删除了完全相同的包,一切都还好。

希望它可以帮助别人。

如果以前的工作项目突然崩溃,提到的错误,你可以尝试以下解决scheme。

  • 删除相应网站/服务项目的bin文件夹。
  • build立

这对我有效。