You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Blazor WebAssembly独立应用静态部署发布问题咨询

解决.NET 8 Blazor WebAssembly静态部署无index.html的问题

方法1:使用传统纯WASM模板(推荐)

.NET 8中仍保留了.NET 7的纯Blazor WebAssembly独立项目模板,直接执行以下命令创建项目:

dotnet new blazorwasm

执行dotnet publish后,发布文件夹会自动生成index.html,和.NET 7的行为完全一致,可直接部署到静态服务器。

方法2:改造Blazor Web App模板(若已使用新模板)

如果已经用dotnet new blazor -int WebAssembly创建了Blazor Web App项目(新模板),需要调整以下内容来支持静态部署:

  1. 修改项目SDK
    打开项目的.csproj文件,将开头的<Project Sdk="Microsoft.NET.Sdk.Web">替换为:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

同时确保属性组和包引用与纯WASM项目一致:

<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
  <Nullable>enable</Nullable>
  <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>

<ItemGroup>
  <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.0" />
  <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="8.0.0" PrivateAssets="all" />
  <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
</ItemGroup>
  1. 替换Program.cs为纯WASM入口
    删除原有的服务器端Program.cs代码,替换为:
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");

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

await builder.Build().RunAsync();
  1. 添加wwwroot/index.html
    在项目的wwwroot目录下创建index.html文件,内容示例:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>你的项目名称</title>
    <base href="/" />
    <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
    <link href="css/app.css" rel="stylesheet" />
    <link href="你的项目名称.styles.css" rel="stylesheet" />
</head>
<body>
    <div id="app">Loading...</div>
    <div id="blazor-error-ui">
        An unhandled error has occurred.
        <a href="" class="reload">Reload</a>
        <a class="dismiss">🗙</a>
    </div>
    <script src="_framework/blazor.webassembly.js"></script>
</body>
</html>

注意将你的项目名称替换为实际的项目名称。

完成以上修改后,执行dotnet publish,发布文件夹会生成index.html,即可部署到静态服务器。

内容的提问来源于stack exchange,提问作者Flores

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:10:21