重新保存Blazor WASM的.razor文件

时间:2020-05-31 16:52:31

标签: 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找不到我能找到的东西。

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

        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();
        }

我在这里想念什么? Blazor WASM还在吗?如果可以的话,我很喜欢dotnet watch dotnet build这样的小技巧。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

从.NET 5.0和VS 16.8.1开始,它似乎没有内置的HMR,就像您在Angular或React项目中会发现的那样,您可以在其中更改代码并刷新浏览器。

根据我发现的信息,此功能适用于.NET 6,但是有解决方法可以使其正常工作,虽然有点麻烦,但确实可以工作。

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

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

最好的,see this thread for more info

答案 2 :(得分:0)

一位老师帮我解决了以下问题。有两种选择:

1- ) 在 Visual Studio 2019 中不使用调试模式:

  • 点击工具>选项->项目和解决方案->ASP .NET Core->在“自动构建和刷新选项”下选择“保存更改后自动构建和刷新浏览器”
  • 现在浏览器会在您进行更改时自行更新,但要使其正常工作,每次运行应用程序时,您都必须通过按 Ctrl + F5(不调试启动)或单击调试来运行它而不进行调试 ->无需调试即可启动 重要提示:只有在没有调试的情况下运行时才有效

要在调试模式下使用,您可以尝试以下操作:

2-) 在项目的 launchSettings.json 文件中包含一个包含以下数据的配置文件:

1.   "Watch": {
2.        "commandName": "Project",
3.        "launchBrowser": true,
4.        "launchUrl": "http://localhost:5000/",
5.        "commandLineArgs": "watch run",
6.        "workingDirectory": "$(ProjectDir)",
7.        "executablePath": "dotnet.exe",
8.        "environmentVariables": {
9.          "ASPNETCORE_ENVIRONMENT": "Development"
10.       }
11.     }

接下来,在调试模式下运行应用程序时,从 Visual Studio 菜单中选择配置文件监视。 注意:通过这个,您将运行 dotnet watch 调试工具。

Marcoratti 教授在以下课程中发送的解决方案:https://www.udemy.com/course/curso-blazor-essencial/learn/lecture/17573912#questions/15161620/