无法在 Visual Studio 2022 上热重载

Posted

技术标签:

【中文标题】无法在 Visual Studio 2022 上热重载【英文标题】:Unable to Hot Reload on Visual Studio 2022 【发布时间】:2021-12-15 01:59:55 【问题描述】:

我将我的 Web 应用程序从 Visual Studio 2019 移至 2022(预览版 7),但我无法热重新加载即使是很小的更改,例如将 if(a=b) 更改为 if(a!=b),并且需要停止调试器,我不确定是什么是“COMPLUS_ForceENC”环境变量,找不到任何相关信息。

当我创建一个新的网络应用程序时,热重载在 C# 和 cshtml 上运行得非常好。

这是我对原始应用进行任何更改时显示的错误:

错误 ENC2004:在项目中所做的更改需要重新启动应用程序:当调试器已附加到已运行的进程时,不允许更改。考虑在启动进程之前设置“COMPLUS_ForceENC”环境变量。

【问题讨论】:

但是你的问题是什么?你对我们有什么期望? VS2022 尚未发布。 IE。预计会有错误。您是否将此情况报告给 Microsoft? 是的,但我不知道需要多长时间,我只是想知道如何设置 COMPLUS_ForceENC 环境变量,谷歌上没有关于这个变量的任何信息! 我刚刚安装了 2022 RTM,当我做了一个非常简单的代码更改时,我在 .NET Core 3.1 Web API 项目中遇到了这个问题。 热重载也不适用于 .NET Core 3.1 MVC 应用程序中的 Cshtml 文件。 正式版现已发布,但我遇到了同样的问题。有人举报了吗?我们可以关注任何页面吗? 【参考方案1】:

我将无法正常工作的热重载归咎于 VS,但在我的情况下,这是由于尝试同时进行调试 ( F5 ) 和热重载而引起的。热重载图标 根本不适用于 Blazor 应用程序。

解决方案非常简单。应用需要在调试(Ctrl+F5)

的情况下启动

在热重载之后工作正常。

【讨论】:

Not for Blazor 甚至不使用 CTRL F5 - Razor 页面是的。 确实如此。我实际上正在构建一个托管在 ASP.NET Core 中的 Blazor Wasm,即使使用 CTRL-F5,HOT RELOAD 也根本不起作用。 Microsoft Visual Studio Community 2022(64 位)版本 17.0.5【参考方案2】:

可能是巧合,但在从 17.0.1 更新到 17.0.2 后,它开始工作了。这很奇怪,因为在更新日志中没有提到这样的错误修复。尝试更新到最新版本。

更新 似乎我只在我的新 .NET 6 项目上使用了这个。在迁移到 .NET 6 的旧版本中,这种情况仍然存在。也许在未完全迁移到 .NET 6 且仍在使用旧的 startup.cs 文件的项目中无法正常工作。在调试模式下,会显示更新通知,但在刷新浏览器之前内容不会改变。如果不是在调试模式下,刷新浏览器不会执行任何操作。

更新 2 发现在新的 .net 6 Asp.net 网页项目中,如果我更改 .razor 文件,热重载效果很好,但在 .cshtml 文件中我需要刷新浏览器才能看到更改。我有这两种文件类型,因为我在同一个项目中使用 razor pages + Blazor。

如果您尝试创建一个 .Net 6 Blazor 项目,我几乎可以肯定 Hot Reload 会起作用。

更新 3 我现在在 Dotnet Github 中打开了一个问题。您可以在那里关注问题。 github.com/dotnet/aspnetcore/issues/38809

【讨论】:

谢谢,这实际上正是我的问题!我不确定缺少什么或如何“完全迁移”到 .Net6! 在调试时尝试更新和热重载,即使是使用 .net6 模板的开箱即用项目,我仍然无法正常工作。 我从 17.0.0 更新到 17.0.2 后解决了。就是那种会毁掉火箭的虫子! 我现在在 Dotnet Github 中打开了一个问题。您可以在那里关注问题。 github.com/dotnet/aspnetcore/issues/38809 Blazor WASM 热重载不起作用 - 使用 .net 6.0.100 在 VS Code 和 VS2022 上进行了广泛测试。【参考方案3】:

VisualStudio 2022 GA 版本也不适合我 :( 看起来我不是唯一一个,我注意到我有一个热重载功能的图标,与 Microsoft 宣传视频中显示的不同,我的是火焰,而工作版本似乎有两个火焰形成一个圆圈:(

我找到了this

*在 Visual Studio 2022 GA 版本中,尚未启用使用 Visual Studio 调试器时对 Blazor WebAssembly 的热重载支持。 如果您通过 Visual 启动应用程序,您仍然可以获得 Hot Reload Studio 没有调试器,我们正在努力解决这个问题 下一次 Visual Studio 更新。

如果我在没有附加调试器的情况下启动程序,我有热重载,或者我可以在没有热重载的情况下使用调试器运行应用程序,这是上面链接的文章所预期的,但 Launch Event 非常具有误导性,因为他们从未提及这也没有显示在演示期间按下了哪个按钮来启动 blazor webasm 并进行热重载工作......无论如何,他们没有显示调试器和热重载为 blazor webasm 一起工作,所以看起来这一切都在我们的脑海中 :( .. . 我们需要等待

【讨论】:

它极具误导性 - 显示 Blazor 服务器端热重载工作的视频,但并不是说这在 wasm 上不起作用。我在这方面浪费了很多时间,并在预览版和发布版中提交了 5 个不同的错误解释。没有了 - 只是浪费时间。【参考方案4】:

这是预览用户的常见问题。现在您可以更新到稳定版本并享受包括热重载在内的全部功能。

请访问https://visualstudio.microsoft.com/下载稳定版VS 2022

【讨论】:

这不起作用 - VS2022 发行版无法解决 Blazor wasm 的问题。 同意。这实际上不适用于 17.0.5 相同。 17.0.5 热重载仅适用于 Blazor 服务器应用程序,不适用于调试模式。

以上是关于无法在 Visual Studio 2022 上热重载的主要内容,如果未能解决你的问题,请参考以下文章

visualstudio2022无法启动附加到进程

无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore

Visual Studio 2022 有时会显示“应用程序无法正确启动”

在 Visual Studio 2022 和 MAUI 中无法指定 iOS Bundle Signing 和 Provisioning

未找到 Visual Studio 2022 Android 设备

Visual Studio 2022 如何关闭新的 Git 体验