繁体   English   中英

ASP NET MVC 4 Razor Views 预编译花费了大量时间

[英]ASP NET MVC 4 Razor Views Precompilation taking an insane amount of time

我问这个问题只是因为我已经尝试了与缓慢的剃刀编译相关的所有其他问题中提出的每一个解决方案(在 SO 和 MSDN 上),但我完全迷失了并被卡住了。

语境:

我有一个 ASP NET MVC 4 (.NET Framework 4.6.2) 项目,在.csproj发布配置中启用了 Razor 视图预编译:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>

IDE 是 Visual Studio 2019 版本 16.11.75.64347

在从功能分支完成合并之前,一切正常。 合并后,当我在发布配置视图中编译项目时,编译需要花费大量时间( 40 分钟以上)。 编译时,我可以在“输出”窗口中看到缓慢出现的常见代码警告(未使用的变量、无法访问的代码等...),因此它似乎并没有卡在单个任务上,但它只是非常缓慢地编译所有观点。

如果我在 Debug 中运行该项目,则视图不会被预编译,因此该项目会立即启动,但每个页面的每次首次加载都会再次花费大量时间(每页 3 分钟以上)。 无论您如何调用 Razor 视图编译,它似乎确实需要很长时间。

问题

Razor 视图 (.cshtml) 编译在预编译视图和在运行时编译时都需要永远。

我试过的:

阅读这里和我尝试过的其他论坛的所有其他问题:

  1. 删除项目解决方案中的 .vs 文件夹
  2. 清理解决方案并重新启动 VS\\computer
  3. 更改 IIS Express 使用的端口
  4. 删除“ C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Temporary ASP.NET Files ”中的所有文件
  5. 删除“ C:\\Users\\USER\\AppData\\Local\\Temp\\Temporary ASP.NET Files ”中的所有文件
  6. 删除“C:\\Users\\USER\\AppData\\Local\\Microsoft\\WebSiteCache”中的所有文件
  7. 删除项目目录中的 bin 和 obj 文件夹
  8. 以管理员身份运行 VS
  9. 从 VS 设置启用和禁用仅我的代码
  10. 从“C:\\Program Files (x86)\\IIS Express”清除缓存和站点

附加信息:

在“卡住”编译视图时,我的 CPU (i7) 保持在 20-30% 左右,Visual Studio 使用 2-6%,所以 CPU 绝对不是这里的瓶颈。 磁盘是 SSD。 内存是 16GB。

我的同事运行与我相同的代码库,没有任何问题,编译时间正常。

任何其他项目(甚至是同一项目的原始分支,合并后导致问题的那个)都没有同样的问题。

BuildAgent 部署相同的应用程序(在 Release 配置中,显然)没有任何问题,所以它显然与我的设置有关。

经过更多的故障排除后,我们找到了解决方案:我将 NuGet 包Microsoft.CodeDom.Providers.DotNetCompilerPlatform从版本1升级到版本2.0.1 在此更改之后,编译时间又恢复到可以接受的状态(对于启用了视图预编译的完整发布版本,大约需要 2\\3 分钟)。

老实说,我不知道 nuget 包如何仅在我的工作站上导致这样的问题。 我什至卸载了VS2019,删除了工作区并重新安装了VS2022,但问题仍然只影响了我的工作站。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM