繁体   English   中英

无法在 Visual Studio 2022 上热重载

[英]Unable to Hot Reload on Visual Studio 2022

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

当我创建一个新的 web 应用程序时,热重载在 C# 和 cshtml 上运行良好。

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

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

派对迟到了,但今天这开始让我发疯,因为每次我进入下一个语句时,调试器都会抛出这个问题。

对我来说解决方案是

  1. 按工具栏中的 Hot Reload 图标,然后按图标上下文菜单中的设置(或通过工具 > 设置 > 调试访问)
  2. 禁用“调试时启用热重载和编辑并继续”

在此处输入图像描述

遗憾的是,我在调试时无法让热重载工作,但这对我来说并不是真正的问题。

就我而言,我犯了一个愚蠢的错误,即尝试热重载在发布配置中运行的应用程序。 确保它是调试:)

在此处输入图像描述

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

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

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

我找到了这个

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

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

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

我指责 VS 导致热重载不起作用,但在我的情况下,这是由于尝试同时调试 ( F5 ) 和热重载造成的。 热重载图标在此处输入图片说明 对于 blazor 应用程序根本不起作用。

解决方法很简单。 该应用程序需要在调试的情况下启动(Ctrl+F5) 在此处输入图片说明

在那之后热重载工作正常。

就我而言,这是由于我在.csproj文件中禁用了 Razor 源生成器<UseRazorSourceGenerator>false</UseRazorSourceGenerator> 将其设置回true可以解决问题。

可能会帮助某人。 我在我的 Web 项目中删除了对 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 的引用,并在我的启动和 HotReload 工作中删除了代码......

首先,热重载应该适用于Ctrl + F5F5调试,所以接受的答案是错误的。

在我的情况下,热重载不起作用,因为我的调试配置的命名与“调试”不同,它被命名为“LocalDebug”(但我确实正确设置了所有设置)。

MS的github有一个问题: https://github.com/dotnet/aspnetcore/issues/43910

就我而言,这是因为我没有在 launchSettings.json 文件中使用“hotReloadProfile”

“IIS Express”:{“commandName”:“IISExpress”,“hotReloadProfile”:“aspnetcore”,“launchBrowser”:true,“environmentVariables”:{“ASPNETCORE_ENVIRONMENT”:“开发”

对我来说,还有另一个正在运行的 VBCSCompiler 进程。 在我结束任务管理器中的额外进程后,Hot Reload 开始工作。

我也有热重载不工作的问题,原因是这一行:

app.UseResponseCompression();

查看更多信息她:
https://github.com/dotnet/aspnetcore/issues/43939#issuecomment-1245382809

我发现热重载不起作用的另一个原因是触发热重载时已经发生了 UI 更改。

我发现如果我在页面上过快地执行热重载,它会抛出热重载错误。 但是,如果我打开检查并等待所有页面/网络更新停止,然后再进行热重载,热重载就会成功。

这在调试器内外都适用于 Blazor WASM。

在尝试解决一个单独的问题时,我在我的项目中启用了本机调试,这导致了这个问题。 再次禁用它后,我可以热重新加载。

https://www.technipages.com/visual-studio-native-code-debugging

  1. 打开项目,选择“项目”选项卡,然后选择“appname 属性...”。
  2. 在左窗格中选择“调试”。
  3. 选中“启用本机代码调试”框以启用它。 取消选中它以禁用它。

(强调我的)

我知道这可能是大多数人最先尝试的事情之一,但我刚刚重新启动了 Visual Studio,它再次运行。

我遇到了同样的问题。 热重载不工作。 我使用的是 VS 2022 和 .Net Core 6,并使用这样的服务;

builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

当我删除“AddRazorRuntimeCompilation()”时。 热重载工作。

有时它有助于保存您的项目,关闭它。 关闭 visual studio 并重新启动它。 通常错误会立即消失..

暂无
暂无

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

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