Blazor.Server 项目如何在托管 Blazor WASM 应用程序中启动 Blazor.Client 应用程序?

SWi*_*gly 5 webassembly asp.net-core blazor

我没有找到任何涉及此特定作品的现有问题/答案。

有人可以解释一下吗...我启动 .Server 项目并最终向我显示 .Client WASM 应用程序是怎么回事?

创建“托管”Blazor WASM 应用程序和 Visual Studio 2022 支架 3 个项目:

  1. Blazor.Client - WASM UI 部分
  2. Blazor.Server - ASP.Net Core 后端
  3. Blazor.Shared - 两者引用的共享类库

奇怪的是,Blazor.Server 有一个对 Blazor.Client 的项目引用。另外奇怪的是,调试启动项目是“Blazor.Server”。这个项目没有 UI 那么为什么它会是启动项目呢?

不知何故,当您按 F5 开始调试时,Visual Studio 会启动 Blazor.Server 项目。但这“神秘地”启动了 Blazor.Client 应用程序。我一生都无法弄清楚 .Server 项目启动 .Client WASM 应用程序的魔力。

显然有项目参考...并且 .Server“Program.cs”文件具有以下内容:

app.MapFallbackToFile("index.html");
Run Code Online (Sandbox Code Playgroud)

我习惯于 ASP.Net Webforms 或 Winforms,其中明确选择了启动项目和启动页面/类,因此很容易看到应用程序启动,然后显示您选择的 UI。

Hen*_*man 4

  1. Visual Studio 启动 Blazor.Server 项目。
  2. 但这“神秘地”启动了 Blazor.Client 应用程序。

第一个陈述是正确的,第二个陈述则不是。

VS 确实启动了服务器并开始监听。

但 VS 还会启动一个预配置的浏览器并将其指向起始 URL。

您可以在 Properties/launchsettings.json 或“运行”按钮下拉部分的菜单栏中找到配置。

然后 Wasm 客户端加载到浏览器中(作为静态文件),index.html 页面开始运行 JS/Wasm/Blazor。

奇怪的是 Blazor.Server 有一个对 Blazor.Client 的项目引用

这是为了 MsBuild,因此您的客户端二进制文件将复制到服务器的输出文件夹。您可以删除该引用,但随后需要添加一些带有字符串的配置。不太灵活。

  • @HH 我现在有点清楚了,但仍然有点困惑。那么,由于 Blazor.Server 项目(网站)引用 Blazor.Client 项目,它(服务器)会自动拥有来自客户端的所有静态文件?因此 Blazor.Client/wwwroot/index.html 页面能够像服务器应用程序中的页面一样加载吗? (2认同)