web-dev-qa-db-fra.com

Existe-t-il un rechargement à chaud pour Blazor côté serveur?

Je n'ai qu'une seule question rapide. Est-il possible de recharger à chaud une application Blazor? Au moins, des fichiers .razor? Maintenant, j'héberge mon application sur local IIS (pas IIS express)).

Je regardais sur Internet, mais je n'ai rien trouvé d'utile.

Merci à tous d'avoir répondu :)

6
cebilon123

Le rechargement à chaud est prévu pour .NET 5, qui est prévu pour novembre 2020 selon @ danroth27 qui travaille sur le projet Blazor.

https://github.com/dotnet/aspnetcore/issues/5456#issuecomment-584219488

Comme le dit @MauricioAtanache, vous pouvez utiliser la montre dotnet mais n'oubliez pas d'ajouter les fichiers à regarder. Exemple:

dotnet watch --project BlazorTest.Server run

Fichier BlazorTest.Server.csproj:

<ItemGroup>
    <Watch Include="..\**\*.razor" />
    <Watch Include="..\**\*.scss" />
    <Watch Include="..\**\*.cs" />
</ItemGroup>

Ce n'est cependant pas vrai rechargement à chaud car il va redémarrer le serveur mais vous devez faire un rafraîchissement manuel dans le navigateur.

Pour résoudre ce problème, j'aime utiliser browser-sync configuré comme proxy pour votre application Web.

Exemple:

browser-sync start --proxy http://localhost:50000/ --files '**/*.cshtml, **/*.css, **/*.js, **/*.htm*'  

https://weblog.west-wind.com/posts/2019/May/18/Live-Reloading-Server-Side-ASPNET-Core-Apps

Il existe également un projet sur Github par @martasp appelé BlazorLiveReload qui est censé gérer Blazor Live Reload sans actualiser la page.

De l'auteur:

Il utilise la version 3 du moteur de rasoir pour compiler les composants dans les classes c #. Ensuite, en utilisant le compilateur Roslyn, j'ai compilé ces classes vers Assembly. Enfin, j'ai chargé le composant app.razor à partir d'un assembly avec réflexion et avec la bibliothèque modifiée de l'hôte de test Steve Sanderson, j'ai transformé le composant en HTML simple. Pour servir des fichiers HTML en temps réel, j'ai utilisé WebSockets pour avoir une communication en duplex intégral.

Je n'ai pas testé ce projet moi-même donc je ne peux pas dire à quel point il fonctionne.

https://github.com/martasp/BlazorLiveReload

Discussion générale sur le problème:

https://github.com/dotnet/aspnetcore/issues/5456

1
Ogglas

Il existe désormais une prise en charge du rechargement à chaud de Blazor avec état dans LiveSharp ( https://www.livesharp.net )

Vous pouvez le voir fonctionner ici: https://www.youtube.com/watch?v=MCh5-44UBpM

Avertissement: je suis l'auteur

0
ionoy