如何在 ASP.NET Core(.NET 6、VS 2022)中禁用浏览器 Link

How to disable Browser Link in ASP.NET Core (.NET 6, VS 2022)

我在 Visual Studio 2022 中禁用了浏览器 Link,并且我还禁用了所有热重载功能。

甚至浏览器 Link 仪表板指示它应该被禁用:

我也不在我的代码中的任何地方使用任何app.UseBrowserLink();代码。 (如 Browser Link in ASP.NET Core.

中所述

但是,这些中间件仍然以某种方式出现在请求管道中:

这些中间件将这个添加到我的 HTML:

<!-- Visual Studio Browser Link -->
<script type="text/javascript" src="https://localhost:44399/0928d478a97d441187231f2a1a7cd5e5/browserLink" async="async" id="__browserLink_initializationData" data-requestId="c94cf93088fb44e98f4e499b20ad7bfe" data-requestMappingFromServer="False"></script>
<!-- End Browser Link -->

<script src="/_framework/aspnetcore-browser-refresh.js"></script></body>

每次我保存文件时,它都会重新加载浏览器。我想停止这种行为,但我 运行 无法选择如何。

这是 IIS Express 或 Visual Studio 自动添加的东西吗?

我还检查了所有的包和 DLL,但我没有看到它包含在我的代码中的任何地方。它必须通过 Visual Studio 2022 所做的一些“魔法”自动包含。

如何停止所有这些重新加载?我不想要任何浏览器 Link 或浏览器刷新。请帮忙,我花了很多时间在这上面,我很绝望。

你快到了。您还需要配置以下内容(不要忘记重新启动您的 VS):

Visual Studio 使用 .NET Core 的 Startup Hook 功能注入这些中间件,如果您在 Program.cs 的第一行设置断点并在 System.Environment.GetEnvironmentVariable("DOTNET_STARTUP_HOOKS")调试器,你可以看到从哪里加载了哪些钩子。如果您现在去重命名它正在尝试加载的文件,它将无法再这样做,您就可以摆脱 browserLink 了!

例如,在我的例子中,它正在加载

"C:\Program Files\Microsoft Visual Studio22\Enterprise\Common7\IDE\Extensions\Microsoft\Web Tools\Browser Link\Microsoft.WebTools.BrowserLink.Net.dll"
"C:\Program Files\dotnet\sdk.0.201\DotnetTools\dotnet-watch.0.201-servicing.22124.17\tools\net6.0\any\middleware\Microsoft.AspNetCore.Watch.BrowserRefresh.dll"

所以我重命名了它们,在它们前面添加了一个 _,这使得脚本注入消失了。