运行时错误:无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0

时间:2013-11-13 16:39:44

标签: c# asp.net-mvc-4 razor runtime-error

我通过NuGet修改了我的ASP.NET MVC4包,现在System.Web.WebPages.Razor v3无法加载。有时其他包也不会加载。

我的同事运行解决方案没有任何问题,因此问题肯定是我的开发系统上的配置(而不是任何已经签入的内容)。

我已经尝试过各种SOF和其他论坛的建议,包括:

以及从那里链接的建议。我还检查了控制面板,发现没有安装程序引用MVC。 (如果重要的话,我正在运行MS Win 7 SP 1.)

我愿意接受任何建议。

这是我的核心转储信息:

  

' /'中的服务器错误应用

     

无法加载文件或程序集“System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'要么   其中一个依赖项。系统找不到指定的文件。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集&System; Web.WebPages.Razor,Version = 3.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。系统找不到指定的文件。

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of
     

可以使用下面的异常堆栈跟踪来识别异常。

Assembly Load Trace: The following information can be helpful to determine why the assembly 'System.Web.WebPages.Razor,
     

Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'   无法加载。

     

===预绑定状态信息===       日志:用户= CodesWithHammer       日志:DisplayName = System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35        (完全指定的)       日志:Appbase = file:/// c:/ users / CodesWithHammer / documents / visual studio 2012 / Projects / MPP / MPP /       日志:初始PrivatePath = c:\ users \ CodesWithHammer \ documents \ visual studio   2012 \项目\ MPP \ MPP \ BIN       调用程序集:Microsoft.Web.WebPages.OAuth,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。

     

===       日志:此绑定在默认加载上下文中启动。       日志:使用应用程序配置文件:c:\ users \ CodesWithHammer \ documents \ visual studio   2012 \项目\ MPP \ MPP \的web.config       日志:使用主机配置文件:C:\ Users \ CodesWithHammer \ Documents \ IISExpress \ config \ aspnet.config       日志:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机配置文件。       日志:政策后参考:System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35       日志:尝试下载新的URL文件:/// C:/ Users / CodesWithHammer / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 5bf3ca07 / f960d9c5 / System.Web.WebPages.Razor.DLL。       日志:尝试下载新的URL文件:/// C:/ Users / CodesWithHammer / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 5bf3ca07 / f960d9c5 / System.Web.WebPages.Razor / System.Web.WebPages.Razor.DLL。       日志:尝试下载新的URL文件:/// c:/ users / CodesWithHammer / documents / visual studio   2012 /项目/ MPP / MPP /斌/ System.Web.WebPages.Razor.DLL。       日志:尝试下载新的URL文件:/// c:/ users / CodesWithHammer / documents / visual studio   2012 /项目/ MPP / MPP /斌/ System.Web.WebPages.Razor / System.Web.WebPages.Razor.DLL。       日志:尝试下载新的URL文件:/// C:/ Users / CodesWithHammer / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 5bf3ca07 / f960d9c5 / System.Web.WebPages.Razor.EXE。       日志:尝试下载新的URL文件:/// C:/ Users / CodesWithHammer / AppData / Local / Temp / Temporary ASP.NET   文件/根/ 5bf3ca07 / f960d9c5 / System.Web.WebPages.Razor / System.Web.WebPages.Razor.EXE。       日志:尝试下载新的URL文件:/// c:/ users / CodesWithHammer / documents / visual studio   2012 /项目/ MPP / MPP /斌/ System.Web.WebPages.Razor.EXE。       日志:尝试下载新的URL文件:/// c:/ users / CodesWithHammer / documents / visual studio   2012 /项目/ MPP / MPP / bin中/ System.Web.WebPages.Razor / System.Web.WebPages.Razor.EXE。

     

堆栈追踪:

[FileNotFoundException: Could not load file or assembly 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral,
     

公钥= 31bf3856ad364e35'或其中一个依赖项。该   系统找不到指定的文件。]          Microsoft.Web.WebPages.OAuth.PreApplicationStartCode.Start()+ 0

[InvalidOperationException: The pre-application start initialization method Start on type
     

Microsoft.Web.WebPages.OAuth.PreApplicationStartCode扔了一个   异常,出现以下错误消息:无法加载文件或   assembly' System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,   公钥= 31bf3856ad364e35'或其中一个依赖项。该   系统找不到指定的文件..]          System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection 1 methods, Func 1 setHostingEnvironmentCultures)+550          System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1   方法)+132          System.Web.Compilation.BuildManager.CallPreStartInitMethods(字符串   preStartInitListPath)+90          System.Web.Compilation.BuildManager.ExecutePreAppStart()+135          System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager   appManager,IApplicationHost appHost,IConfigMapPathFactory   configMapPathFactory,HostingEnvironmentParameters hostingParameters,   PolicyLevel policyLevel,Exception appDomainCreationException)+516

[HttpException (0x80004005): The pre-application start initialization method Start on type
     

Microsoft.Web.WebPages.OAuth.PreApplicationStartCode扔了一个   异常,出现以下错误消息:无法加载文件或   assembly' System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,   公钥= 31bf3856ad364e35'或其中一个依赖项。该   系统找不到指定的文件..]          System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9874840          System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+101          System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest   wr,HttpContext context)+254

     

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

(对于那些读到这里的人:我没有足够的声誉来制作标签拔出我的头发。如果有适当的现存标签,请加入.KTHX。)

ETA:当我尝试手动将Microsoft.AspNet.Mvc更新为版本3时,这是我在软件包管理器控制台上遇到的错误:

  

安装失败。回滚...安装包:更新   ' Microsoft.AspNet.Mvc 5.0.0'到Microsoft.AspNet.Mvc 3.0.20105.1'   失败。无法找到版本的   ' Microsoft.AspNet.Mvc.FixedDisplayModes'这是兼容的   ' Microsoft.AspNet.Mvc 3.0.20105.1'。在行:1字符:16   + Install-Package<<<< Microsoft.AspNet.Mvc -Version 3.0.20105.1       + CategoryInfo:NotSpecified:(:) [Install-Package],InvalidOperationException       + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

ETA2:我从同事那里得到了包目录。他们有MS.AspNet.Mvc v5,他们运行得很好。但他们也有MS.AspNet.Mvc.FixedDisplayModes v5。所以我要将两者都添加进去。是的,我已经备份了我的整个解决方案。 :)

ETA3:所以我重新升级到AspNet MVC v5,并跳过了已弃用的Mvc.FixedDisplayNodes。然后我遇到了与AspNet.WebPages版本冲突的问题,所以我使用了这个修复程序:Conflicting versions of ASP.NET Web Pages detected: specified version is "1.0.0.0", but the version in bin is "2.0.0.0" in ASP.MET MVC 3

现在我的项目正在运行!

谢谢大家的帮助!

12 个答案:

答案 0 :(得分:30)

您可以在Nuget Package Microsoft ASP.NET网页版本3.2.0

中找到它

Microsoft ASP.NET Web Pages

如果你引用了早于3.0.0.0的版本,删除引用,在你的packages文件夹中添加对正确.dll的引用,并确保在属性中将“Copy Local”设置为“True” .dll。

然后在你的web.config中(如@MichaelEvanchik所述)

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" PublicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

答案 1 :(得分:18)

“Update-Package -reinstall Microsoft.AspNet.WebPages”

在程序包管理器控制台中使用此命令重新安装Microsoft.AspNet.WebPages nuget软件包。 100%工作!!

答案 2 :(得分:3)

同样的事情发生在我和NUGET身上。

以下标记有帮助

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" PublicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
  </dependentAssembly>

如果在服务器上发生这种情况,我必须确保我在文件系统的更“特权帐户”上运行应用程序池,但我不认为这是你的问题

答案 3 :(得分:2)

在新的动作管理器中,“razorengine”是一种依赖。最新版本的Razorengine将依赖项安装到System.Web.Razor 3.0.0。

如果您在应用程序中使用早期版本(我假设您在另一个项目中使用了actionmailer,并且您从另一个项目中引用了邮件功能),那么当然不会出现此问题。

在早期的应用程序中,我有一个使用system.web.Razor版本2.0.0的webapplication MVC。 当然,我得到了这个问题。 怎么修? =&GT;简单!

  1. 只需卸载动作管理器项目中的整个动作管理器即可。
  2. 安装以前版本的RazorEngin

      

    Install-Package RazorEngine -Version 3.3.0(因为版本3.3.0将引用system.web.razor 2.0.0)

  3.   
  4. 再次安装动作邮件程序(它不会安装最新版本的RazorEngin,因为你已经完成了这一步)
  5.      更迭!

答案 4 :(得分:1)

您的网络应用的bin文件夹中是否有System.Web.WebPages.Razor.dll?它的版本是什么? (资源管理器右击,属性)我猜它不是3.0.0.0。只需从你的同事那里复制packages文件夹,就可以获得v3.0.0.0的nuget包。或者手动安装:http://www.nuget.org/packages/Microsoft.AspNet.Mvc/3.0.20105.1

编辑:如果您从同事那里复制内容,也请将相关的版本号复制到packages.config中。这就是告诉nuget将哪些版本放入packages文件夹。

答案 5 :(得分:1)

我不想安装visual studio和开发环境,所以我在Windows server 2016机器上安装了AspNetMVC4Setup.exe,它解决了这个问题。安装程序是从Microsoft网站下载的。

File properties of the installer

答案 6 :(得分:0)

在我的情况下,通过以下任何一种方法都无法解决问题。我的包配置中的所有路径都是正确的,并且dll已经按照所提到的那样存在,我仍然遇到System.Web.WebPages.Razor的运行时错误。的 I changed the localhost port number and this worked

我不确定为什么会遇到这个问题以及为什么更改端口号会解决问题。只是发布这个,因为我觉得这可能对那里的人有用。

答案 7 :(得分:0)

在我的情况下,问题不在于绑定重定向或丢失/不匹配的Microsoft.AspNet.Razor包/ dll,因此上述解决方案无效。

在我的非网络项目中,问题是RazorEngine + Microsoft.AspNet.Razor安装在不同的项目(项目A)中而不是调用程序集/启动项目(项目B)。由于没有明确引用Razor,因此 System.Web.Razor未在发布版本中复制到/ bin

解决方案是在应用程序入口点安装RazorEngine + Microsoft.AspNet.Razor (项目B,我的ConsoleApplication),然后将System.Web.Razor复制到/ bin并且每个人都很开心。

答案 8 :(得分:0)

我得到了同样的错误,对我有用的是:

  1. 修复引用错误。
  2. 关闭Visual Studio。
  3. 删除包裹。
  4. 删除.vs文件夹。
  5. 再次运行Project。
  6. 重建项目。

答案 9 :(得分:0)

我遇到了这个问题,因为我卸载了VS 2012,我不想重新安装它,因此我从Microsoft.com下载了AspNetMVC4Setup.exe并解决了我的问题。

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

答案 10 :(得分:0)

升级到v3.0.0.preview4时遇到了这个问题,因此降级到稳定版本可以解决此问题。

答案 11 :(得分:0)

我收到此错误消息是因为发布Web应用程序时,bin文件夹中缺少此类DLL(以及许多其他DLL)。似乎是Visual Studio发布功能中的错误。清理,重新编译并再次发布,使此类DLL能够正确发布。