检查是否有代码更新:Visual Studio 2019和2022

36

在调试过程中,有时(经常)会收到“检查任何代码更新”的消息:

message

这会降低生产力。我做了一些研究,并在Visual Studio社区上找到了一篇文章: https://developercommunity.visualstudio.com/t/visual-studio-gets-stuck-looking-for-code-changes/1521675?viewtype=solutions

但是该帖子被标记为信息不足。看起来发帖人并不知道如何复现这个问题。我的情况也是如此,我不知道为什么会出现这种情况。 有人遇到过这个问题吗?如何解决?这在VS 2019和2022中都会发生。


4
自从他们添加了这个热重载功能,我在编辑和继续方面遇到了很多问题。我们的解决方案非常庞大,涉及VB.Net、C#、Webforms和MVC的组合。热重载似乎在C#上运行良好,但在VB上进行编辑和继续则十分痛苦,有时会导致IDE锁定几分钟。我真诚地希望他们在发布之前能够更好地测试这些东西。我尝试过下面所有的建议,但都不是很有效。 - camainc
1
@camainc 同意,不过我只是在开始使用C#时才遇到这个麻烦;在VB中,即使是在更大的解决方案中,我也从未遇到过问题。实际上,在C#项目中有很多东西不如VB好,比如智能感知在我的经验中有点小故障。 - SteveCinq
7个回答

27

我曾经遇到了类似的问题,当在断点处继续执行代码时,会不断弹出一个窗口,严重拖慢了调试的进程...

经过数小时的尝试和排查,我找到了可能的解决方法。我不确定你的设置是怎样的,但我在使用以下设置时开始遇到这个问题:在Visual Studio 2022上使用.NET 6:

The settings that may affect this

当我关闭它们并重新启动Visual Studio后,调试进程变得更快了(并且窗口只在该调试会话中第一次命中断点时出现,而且仅出现短暂的时间)。所以你可以试一下。

如果即使关闭这些设置后还遇到此问题,请在“工具”->“选项”->“调试”->“.NET/C++ 热重新加载”中关闭此设置:

Another setting that probably affects this issue

我知道关闭这个特定的设置可能并不理想(因为与任何.NET相关的热重新加载都非常有用和酷),但如果你的生产力因此而受到影响,那么我建议你这样做。

请注意,我目前正在使用带有.NET 6的Visual Studio 2022。
更新(2/18/2022): 似乎更新到Visual Studio 17.1.0会修复此问题。升级到17.1.0后,我没有看到此弹出窗口。
更新(2/25/2022): 在使用VS 17.1.0一周后,发现如果您打开了“使用.NET SDK预览版”选项,则此问题仍然存在。否则,似乎关闭“工具->选项->环境->预览功能”中的“使用.NET SDK预览版”将极大地降低Visual Studio检查代码更改或使此“检查任何代码更新”弹出窗口不显示时的加载时间。而且似乎“丰富的代码导航”功能根本不影响这个问题。
更新(3/7/2022):我再次遇到了这个问题,看起来它只在特定情况下发生。所以每当我打断点,然后进行编辑并执行“Edit and Continue”操作时,似乎Hot Reload会搜索整个项目以查找其他更改(尽管更改只针对一个文件和一行代码),从而在较大的项目上花费更长时间,导致出现“Checking for any code updates”弹窗,同时Hot Reload寻找需要重新编译的更改。因此,在Visual Studio团队解决Hot Reload功能的性能问题等其他问题之前,如果这个问题导致您的调试和项目工作受到巨大延迟,我建议关闭此功能。

对于编辑Razor文件(如.cshtml.razor)时正在运行应用程序的情况,如果您仅对视图进行更改,我建议在不进行调试的情况下运行它。这样,您可以在编辑视图时仍然利用Hot Reload而不会遇到此问题。


2
我也遇到了同样的问题,在使用VS 2022和.NET 6时出现了(在.NET 5.0中是正常的)。 - HolaJan
1
是的,在使用了几个星期后,我确实注意到这个弹出窗口仍然会在调试会话期间显示,并且尤其在我设置断点时会减慢速度。所以我尝试了一些其他的方法,比如打开托管代码的JIT调试(工具->选项->调试->即时->托管),缓存符号,并将符号设置为“仅加载指定的模块”(工具->选项->调试->符号)。在设置这些东西之后,虽然它可能仍然会出现,但调试会话的性能似乎要好得多,而且如果出现了弹出窗口,也不会被延迟太多。 - D.K
1
@Enrico 你可以在:工具 -> 选项 -> 环境 -> 预览功能 中找到它。 - Raoul
1
更新到Visual Studio 17.1.0之后,我再也没有看到这个问题了。 - D.K
3
我又在17.1.2上遇到这个问题了 :( - Dilshod K
显示剩余10条评论

8

我通过取消以下选项来解决了这个问题:

工具->选项->调试->.NET/C+++热重新加载->调试时启用热重新加载和编辑并继续

希望它有效。


它只适用于CS文件,但在Razor页面中无法工作,会减慢Razor页面的调试速度。 - Dharmeshsharma
正确的路径是:工具 > 选项 > 调试 > .NET/C++ 热重载 请记住,如果您当前正在调试会话中,则无法取消选中这些设置 - 复选框将变为灰色。 - Will Buffington
@anand:这对我来说非常有效(MSVS 2022 v17.4.2,目标框架.Net 6,C# + Razor页面)- 谢谢! - paulsm4

1

在我编写一个非常长的方法时,出现了这种情况。过了一会儿,编辑和继续需要花费很长时间。我将该方法拆分成较小的块,然后一切都恢复正常。

后来我成功地再次重现了这个问题,然后它又变得很慢。我正在使用Visual Studio 2019。


1

我通过取消以下选项来解决它:

工具->选项->调试->启用编辑和继续以及热重新加载


0
我通过关闭除了正在调试的文件之外的所有文件来解决了这个问题。 我打开了很多文件,包括 .razor 和 .razor.cs 文件,因此我认为这些文件被错误地扫描以进行更改。

0

只需点击热重载图标旁边的箭头,然后选择设置,取消选中热重载选项。即使无法通过工具->选项->调试...来取消选中该选项的用户也可以这样操作。

enter image description here


-1

我也遇到了同样的问题,已经尝试解决一年多了,但都没有成功。 在选项设置中进行了几次尝试,但都没有帮助。这个问题始于VS2017 桌面Winform框架4.6.1。现在我正在使用VS2019, 病毒扫描器也会减缓代码更改的持续时间。

现在我意识到: 1. 异常发生了,但被try catch捕获了(输出窗口仅显示调试信息)。

在清除此异常后,代码很可能会更快地继续执行。 希望这能帮助到某些人。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接