ceb*_*123 38 c# blazor blazor-server-side blazor-client-side blazor-webassembly
我只有一个快速的问题。有没有办法热重载 blazor 应用程序?至少,.razor 文件?现在我将我的应用程序托管在本地 IIS(不是 IIS express)上。
我正在浏览互联网,但没有发现任何有用的东西。
谢谢大家的回答:)
Mau*_*che 55
也许您可以尝试从命令提示符运行您的应用程序:
dotnet watch run debug
Run Code Online (Sandbox Code Playgroud)
Ogg*_*las 21
2021-04-09 更新:
初始 .NET 热重载支持 .NET 6 Preview 3
将 "hotReloadProfile": "aspnetcore" 属性添加到 launchSettings.json 中的启动配置文件。对于 Blazor WebAssembly 项目,请使用“blazorwasm”热重载配置文件。
使用dotnet watch
.
您可以在docs 中找到支持的代码编辑列表。
感谢@Quango 指出。
2020-04-09 更新:
而不是使用browser-sync
我加入以下代码_Host.cshtml
下<script src="_framework/blazor.server.js"></script>
<environment include="Development">
<script>
window.Blazor.defaultReconnectionHandler.onConnectionDown = function () {
setTimeout(function () {
location.reload();
}, 7000);
}
</script>
</environment>
Run Code Online (Sandbox Code Playgroud)
不是最佳的,但效果更好,因为您需要少一台 http 服务器。也可以使用_reconnectCallback
,如果你还是喜欢看到的消息Attempting to reconnect to the server...
和Could not reconnect to the server. Reload the page to restore functionality.
。
window.Blazor.defaultReconnectionHandler._reconnectCallback = function (d) {
document.location.reload();
}
Run Code Online (Sandbox Code Playgroud)
https://thijstijsma.nl/2020/02/18/blazor-server-hot-reload/ /sf/answers/4186559891/
原来的:
据负责 Blazor 项目的 @danroth27 称,计划在 2020 年 11 月对 .NET 5 进行热重载。
https://github.com/dotnet/aspnetcore/issues/5456#issuecomment-584219488
正如@MauricioAtanache 所说,您可以使用 dotnet watch,但不要忘记添加要观看的文件。例子:
dotnet watch --project BlazorTest.Server run
Run Code Online (Sandbox Code Playgroud)
BlazorTest.Server.csproj 文件:
<ItemGroup>
<Watch Include="..\**\*.razor" />
<Watch Include="..\**\*.scss" />
<Watch Include="..\**\*.cs" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
然而,这不是真正的热重载,因为它会重新启动服务器,但您必须在浏览器中手动刷新。如果添加新文件,您还需要在重新加载之前编辑现有文件。
为了解决这个问题,我喜欢使用browser-sync
设置作为您的网络应用程序的代理。
例子:
browser-sync start --proxy https://localhost:5001/ --files '**/*.razor,**/*.cshtml, **/*.css, **/*.js, **/*.htm*'
Run Code Online (Sandbox Code Playgroud)
https://weblog.west-wind.com/posts/2019/May/18/Live-Reloading-Server-Side-ASPNET-Core-Apps
在 Github 上还有一个由 @martasp 开发的项目,该项目被称为BlazorLiveReload
应该在不刷新页面的情况下处理 Blazor Live Reload。
来自作者:
它使用 razor 引擎版本 3 将组件编译为 c# 类。然后使用 Roslyn 编译器将这些类编译成汇编。最后,我使用反射从程序集中加载 app.razor 组件,并使用 Steve Sanderson 测试主机修改库将组件转换为纯 HTML。为了实时提供 HTML 文件,我使用 WebSockets 进行全双工通信。
我自己还没有测试过这个项目,所以我不能说它的效果如何。
https://github.com/martasp/BlazorLiveReload
关于这个问题的一般线程:
https://github.com/dotnet/aspnetcore/issues/5456
Thijs Tijsma 有一篇对我有用的帖子。
您必须在没有附加调试器的情况下运行Visual Studio
(在 Visual Studio 中为CTRL+ F5)
在Pages\_host.cshtml
添加
<script src="_framework/blazor.server.js"></script>
<!-- Make sure you place it after the include for blazor.server.js -->
<environment include="Development">
<script src="~/Scripts/HotReload.js"></script>
</environment>
Run Code Online (Sandbox Code Playgroud)
然后只需制作重新加载js
文件
wwwroot\scripts\HotReload.js
window.Blazor.defaultReconnectionHandler.onConnectionDown = function ()
{
window.location.reload();
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25054 次 |
最近记录: |