为 Blazor WASM 保存时重新编译 .razor 文件

Ben*_*ica 9 c# asp.net-core blazor blazor-client-side

有没有办法让 Blazor Webassembly.razor在更改/更新并保存文件时重新编译它们?我已经习惯了这种情况发生在传统的 ASP.NET Core MVC 剃刀视图以及像 Angular 这样的客户端框架中。在 ASP.NET Core MVC > 3.0 中,类似的 services.AddRazorPages().AddRazorRuntimeCompilation();方法可以解决问题,但我找不到 Blazor 的任何内容。

当我需要停止整个应用程序并重新启动它以查看最新更改时,这很烦人。默认情况下,Main新 Blazor 应用程序的方法如下所示

        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("app");

            builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });

            await builder.Build().RunAsync();
        }
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?Blazor WASM 还没有出现吗?dotnet watch dotnet build如果这是一个解决方案,我对一些有点hacky的东西持开放态度。

And*_*ham 7

从 .NET 5.0 和 VS 16.8.1 开始,它看起来不像在 Angular 或 React 项目中可以找到的内置 HMR,您可以在其中更改代码并让它刷新浏览器。

根据我发现的信息,这个功能是为 .NET 6 设计的,但是有一个解决方法可以让它工作,它有点麻烦,但它确实有效。

如果您使用dotnet watch --project "{PathToServer}/{YourServerProject}.csproj" run而不是启动调试或按 F5 来运行 .NET 项目,它将监视项目文件(包括.razor文件)中的任何更改并重新编译它们。

截至目前,浏览器将显示一条消息,说它失去了与服务器的连接,并且似乎没有重新建立连接。您需要手动刷新浏览器,任何更改都会显示,但您将丢失任何应用程序状态。

他们现在拥有的最好的,请参阅此主题以获取更多信息