79 lines
3.6 KiB
Markdown
79 lines
3.6 KiB
Markdown
# Blazor Project Configuration
|
|
|
|
This document explains the hosting model used in this project, how to identify it, and how to switch between different Blazor setups.
|
|
|
|
## Current Project Type: Blazor Web App (.NET 8+)
|
|
|
|
This project uses the **Blazor Web App** template introduced in .NET 8. This is a unified model that supports multiple rendering modes:
|
|
- **Static Server-Side Rendering (Static SSR)**: The default mode for most components in this project.
|
|
- **Interactive WebAssembly**: Currently configured as the interactive hosting model.
|
|
|
|
### 1. How to tell it's using WebAssembly
|
|
You can identify the hosting model by looking at the following locations:
|
|
|
|
- **`AOW4/Program.cs`**:
|
|
- `builder.Services.AddRazorComponents().AddInteractiveWebAssemblyComponents();` registers the WebAssembly services.
|
|
- `app.MapRazorComponents<App>().AddInteractiveWebAssemblyRenderMode()` enables the WebAssembly rendering mode.
|
|
- **Project Structure**:
|
|
- **`AOW4` (Server Project)**: Handles the initial request and serves the static assets.
|
|
- **`AOW4.Client` (Client Project)**: Contains components and logic intended to run in the user's browser via WebAssembly.
|
|
- **Project References (`AOW4.csproj`)**:
|
|
- The server project references the client project: `<ProjectReference Include="..\AOW4.Client\AOW4.Client.csproj" />`.
|
|
- It also includes the package `Microsoft.AspNetCore.Components.WebAssembly.Server`.
|
|
|
|
## 2. Switching Between Setups
|
|
|
|
### Switching to Blazor Server (Interactive Server)
|
|
If you want components to run on the server via SignalR instead of WebAssembly:
|
|
|
|
1. **Update `Program.cs` in the Server project**:
|
|
```csharp
|
|
// Add service registration
|
|
builder.Services.AddRazorComponents()
|
|
.AddInteractiveServerComponents(); // Add this line
|
|
|
|
// Enable render mode
|
|
app.MapRazorComponents<App>()
|
|
.AddInteractiveServerRenderMode(); // Add this line
|
|
```
|
|
2. **On your Components**:
|
|
Change the render mode attribute at the top of your `.razor` files:
|
|
```razor
|
|
@rendermode InteractiveServer
|
|
```
|
|
|
|
### Using Interactive Auto
|
|
Auto mode uses Blazor Server while the WebAssembly bundle is downloading, then switches to WebAssembly on subsequent visits.
|
|
|
|
1. **Update `Program.cs`**:
|
|
Ensure both `AddInteractiveServerComponents()` and `AddInteractiveWebAssemblyComponents()` are registered, and both render modes are added to `MapRazorComponents<App>()`.
|
|
2. **On your Components**:
|
|
```razor
|
|
@rendermode InteractiveAuto
|
|
```
|
|
|
|
### Switching to ONLY Blazor Server
|
|
To remove WebAssembly entirely:
|
|
1. Remove the `AOW4.Client` project reference from `AOW4.csproj`.
|
|
2. Remove all "WebAssembly" related calls in `Program.cs`.
|
|
3. Delete the `AOW4.Client` project.
|
|
4. Ensure all components are moved to the `AOW4` (Server) project.
|
|
|
|
## 3. Production Release for Blazor WebAssembly
|
|
|
|
Since this is a **hosted** Blazor Web App, you publish the **Server project**. The build process automatically handles the WebAssembly client assets.
|
|
|
|
### Command
|
|
Run this command from the solution root:
|
|
```powershell
|
|
dotnet publish AOW4\AOW4.csproj -c Release
|
|
```
|
|
|
|
### What happens during publish:
|
|
1. **Server Compilation**: The ASP.NET Core host project is compiled.
|
|
2. **Client Compilation**: The `AOW4.Client` project is compiled into WebAssembly (`.wasm`) and static assets.
|
|
3. **Asset Integration**: All client-side files (WASM, JS, CSS, images) are placed in the `wwwroot` folder of the published server output.
|
|
4. **Output Directory**: The final ready-to-deploy application will be in `AOW4\bin\Release\net10.0\publish\`.
|
|
|
|
To deploy, simply copy the contents of the `publish` folder to your web server (IIS, Azure App Service, Nginx, etc.).
|