Обновление 2021-04-09:
Первоначальная поддержка горячей перезагрузки .NET для .NET 6 Preview 3
Добавьте свойство hotReloadProfile: aspnetcore в свой профиль запуска в launchSettings.json. Для проектов Blazor WebAssembly используйте профиль горячей перезагрузки blazorwasm.
Запустите проект, используя dotnet watch
.
Вы можете найти список поддерживаемых изменений кода в документы.
https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-3/#initial-net-hot-reload-support
Спасибо @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>
Не оптимально, но работает лучше, так как вам нужно на один 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();
}
https://thijstijsma.nl/2020/02/18/blazor-server-hot-reload/ https://stackoverflow.com/a/59807998/3850405
Исходный:
По словам @ danroth27, работающего над проектом Blazor, для .NET 5 запланирована горячая перезагрузка, которая запланирована на ноябрь 2020 года.
https://github.com/dotnet/aspnetcore/issues/5456#issuecomment-584219488
Как говорит @MauricioAtanache, вы можете использовать dotnet watch, но не забудьте добавить, какие файлы смотреть. Пример:
dotnet watch --project BlazorTest.Server run
Файл BlazorTest.Server.csproj:
<ItemGroup>
<Watch Include="..\**\*.razor" />
<Watch Include="..\**\*.scss" />
<Watch Include="..\**\*.cs" />
</ItemGroup>
Однако это не истинная горячая перезагрузка, поскольку она перезапускает сервер, но вам нужно выполнить обновление вручную в браузере. Вам также необходимо будет отредактировать существующий файл перед перезагрузкой, если вы добавите новый файл.
Чтобы решить эту проблему, мне нравится использовать browser-sync
, настроенный в качестве прокси для вашего веб-приложения.
Пример:
browser-sync start --proxy https://localhost:5001/ --files '**/*.razor,**/*.cshtml, **/*.css, **/*.js, **/*.htm*'
https://weblog.west-wind.com/posts/2019/May/18/Live-Reloading-Server-Side-ASPNET-Core-Apps
На Github есть проект @martasp под названием BlazorLiveReload
, который должен обрабатывать Blazor Live Reload без обновления страницы.
От автора:
Он использует движок бритвы версии 3 для компиляции компонентов в классы C #. Затем с помощью компилятора Roslyn я скомпилировал эти классы в сборку. Наконец, я загрузил компонент app.razor из сборки с отражением и с помощью модифицированной библиотеки Стива Сандерсона Test я превратил компонент в простой HTML. Чтобы обслуживать файлы HTML в реальном времени, я использовал WebSockets для полнодуплексной связи.
Я сам не тестировал этот проект, поэтому не могу сказать, насколько хорошо он работает.
https://github.com/martasp/BlazorLiveReload
Общая ветка по проблеме:
https://github.com/dotnet/aspnetcore/issues/5456
person
Ogglas
schedule
08.03.2020