30

我通过 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,

版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 无法加载。

=== 预绑定状态信息 === LOG:User = CodesWithHammer LOG:DisplayName = System.Web.WebPages.Razor,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35(完全指定) LOG:Appbase = file:///c:/users/CodesWithHammer/documents/visual studio 2012/Projects/MPP/MPP/ LOG: Initial PrivatePath = c:\users\CodesWithHammer\documents\visual studio 2012\Projects\MPP\MPP\bin 调用程序集:Microsoft.Web.WebPages.OAuth,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35。

=== LOG:此绑定在默认加载上下文中开始。日志:使用应用程序配置文件:c:\users\CodesWithHammer\documents\visual studio 2012\Projects\MPP\MPP\web.config 日志:使用主机配置文件:C:\Users\CodesWithHammer\Documents\IISExpress\config\aspnet .config LOG:使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 中的机器配置文件。日志:后策略参考:System.Web.WebPages.Razor,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35 日志:尝试下载新 URL 文件:///C:/Users/CodesWithHammer/AppData/Local /Temp/临时 ASP.NET 文件/root/5bf3ca07/f960d9c5/System.Web.WebPages.Razor.DLL。日志:正在尝试下载新的 URL 文件:///C:/Users/CodesWithHammer/AppData/Local/Temp/Temporary ASP。NET 文件/root/5bf3ca07/f960d9c5/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL。日志:正在尝试下载新的 URL 文件:///c:/users/CodesWithHammer/documents/visual studio 2012/Projects/MPP/MPP/bin/System.Web.WebPages.Razor.DLL。日志:尝试下载新 URL 文件:///c:/users/CodesWithHammer/documents/visual studio 2012/Projects/MPP/MPP/bin/System.Web.WebPages.Razor/System.Web.WebPages.Razor.DLL . 日志:正在尝试下载新的 URL 文件:///C:/Users/CodesWithHammer/AppData/Local/Temp/Temporary ASP.NET Files/root/5bf3ca07/f960d9c5/System.Web.WebPages.Razor.EXE。日志:尝试下载新的 URL 文件:///C:/Users/CodesWithHammer/AppData/Local/Temp/Temporary ASP.NET Files/root/5bf3ca07/f960d9c5/System.Web.WebPages.Razor/System.Web.WebPages .Razor.EXE。日志:正在尝试下载新的 URL 文件:///c:/users/CodesWithHammer/documents/visual studio 2012/Projects/MPP/MPP/bin/System.Web.WebPages.Razor.EXE。日志:尝试下载新的 URL 文件:///c:/users/CodesWithHammer/documents/visual studio 2012/Projects/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,

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

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

Microsoft.Web.WebPages.OAuth.PreApplicationStartCode 引发异常并显示以下错误消息:无法加载文件或程序集“System.Web.WebPages.Razor,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其中之一它的依赖关系。系统找不到指定的文件..] System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection1 methods, Func1 setHostingEnvironmentCultures) +550 System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 方法) +132 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +90 System.Web.Compilation.BuildManager.ExecutePreAppStart() +135 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,异常 appDomainCreationException)+516

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

Microsoft.Web.WebPages.OAuth.PreApplicationStartCode 引发异常并显示以下错误消息:无法加载文件或程序集“System.Web.WebPages.Razor,版本=3.0.0.0,文化=中性,PublicKeyToken=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 3.0.20105.1”兼容的“Microsoft.AspNet.Mvc.FixedDisplayModes”版本。在 line:1 char: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.Mvcv5,并且运行良好。但他们也有MS.AspNet.Mvc.FixedDisplayModesv5。所以我要把这两个都加进去。是的,我已经备份了我的整个解决方案。:)

ETA3:所以我重新升级到 AspNet MVC v5,并跳过了已弃用的 Mvc.FixedDisplayNodes。然后我遇到了 AspNet.WebPages 版本冲突的问题,所以我使用了这个修复: 检测到的 ASP.NET 网页冲突版本:指定版本为“1.0.0.0”,但 bin 中的版本为“2.0.0.0” ASP.MET MVC 3

现在我的项目运行了!

感谢大家的帮助!

4

12 回答 12

38

您可以在 Nuget Package Microsoft ASP.NET Web Pages 版本 3.2.0 中找到它

Microsoft ASP.NET 网页

如果您有对早于 3.0.0.0 的版本的引用,请删除该引用,在您的包文件夹中添加对正确 .dll 的引用,并确保在 .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>
于 2014-07-21T14:57:04.567 回答
24
"Update-Package –reinstall Microsoft.AspNet.WebPages"

在包管理器控制台中使用此命令重新安装 Microsoft.AspNet.WebPages nuget 包。

于 2016-01-21T12:01:57.087 回答
4

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>

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

于 2013-11-13T16:47:47.013 回答
2

在新的 actionmailer 中,“razorengine”是一个依赖项。最新版本的 Razorengine 将依赖项安装到 System.Web.Razor 3.0.0。

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

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

  1. 只需在您的 actionmailer 项目中卸载整个 actionmailer。
  2. 安装以前版本的 RazorEngin

    安装包 RazorEngine -版本 3.3.0(因为版本 3.3.0 将引用 system.web.razor 2.0.0)

  3. 再次安装 actionmailer(它不会安装最新版本的 RazorEngin,因为您自己已经这样做了)
成功!

于 2014-01-25T12:29:38.067 回答
1

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

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

于 2013-11-13T16:43:33.253 回答
1

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

安装程序的文件属性

于 2017-08-03T12:49:17.220 回答
0

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

  1. 修复引用错误。
  2. 关闭 Visual Studio。
  3. 删除包。
  4. 删除 .vs 文件夹。
  5. 再次运行项目。
  6. 重建项目。
于 2017-01-24T21:09:01.097 回答
0

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

于 2019-04-22T20:20:53.753 回答
0

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

于 2020-11-20T08:30:53.273 回答
0

就我而言,按照上述任何方法都无法解决问题。我的包配置中的所有路径都是正确的,并且 dll 已经到位,但我仍然收到 System.Web.WebPages.Razor 的运行时错误。 I changed the localhost port number and this worked

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

于 2015-09-22T09:46:58.217 回答
0

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

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

于 2018-08-31T16:25:28.290 回答
0

就我而言,问题不在于绑定重定向或缺少/不匹配的 Microsoft.AspNet.Razor 包/dll,因此上述解决方案不起作用。

在我的非 Web 项目中,问题是 RazorEngine+Microsoft.AspNet.Razor 安装在与调用程序集/启动项目 (Project B) 不同的项目 (Project A) 中。因为没有明确引用 Razor,所以System.Web.Razor 没有在 Release 版本中复制到 /bin。

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

于 2016-08-03T09:02:30.903 回答