Avalonia包升级至11.2.2后浏览器应用无法运行求助
解决Avalonia 11.x升级后Wasm项目无法运行的问题
针对你升级Avalonia到11.2.2后Wasm项目仅显示启动画面、报错dotnet.js.map 404和blazor.boot.json加载失败的问题,本质是11.1+版本的Avalonia Wasm项目结构和启动逻辑发生了变更,以下是具体修复步骤:
1. 彻底清理旧构建产物
删除项目根目录下的bin、obj文件夹,以及AppBundle目录,避免旧缓存文件干扰新版本构建。
2. 同步所有Avalonia包版本
打开项目的.csproj文件,确保所有Avalonia相关的PackageReference版本统一为11.2.2,核心依赖至少包含:
<PackageReference Include="Avalonia" Version="11.2.2" /> <PackageReference Include="Avalonia.Desktop" Version="11.2.2" /> <PackageReference Include="Avalonia.Browser" Version="11.2.2" />
注意:11.1+版本必须显式引用Avalonia.Browser包,旧版本可能无需此引用。
3. 更新项目配置项
在.csproj的<PropertyGroup>中添加或更新以下配置:
<OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <!-- 确保使用对应版本的.NET,Avalonia 11.2.x适配.NET 8 --> <AvaloniaWasmMode>Auto</AvaloniaWasmMode> <WasmBuildNative>false</WasmBuildNative> <!-- 调试阶段禁用Native构建,发布时可改为true --> <BlazorEnableCompression>false</BlazorEnableCompression> <!-- 避免调试时压缩文件导致的问题 -->
4. 修复启动脚本与页面
11.1+版本不再使用dotnet.js作为入口,需替换为AvaloniaWasm.js:
- 打开
index.html,将原有的dotnet.js相关引用替换为:<script src="_framework/AvaloniaWasm.js"></script> - 替换或删除旧的
main.js,新版本的启动逻辑示例(替换为你的程序集名称):import { initialize } from './_framework/AvaloniaWasm.js'; initialize({ appAssembly: 'YourAppAssemblyName.dll', assetsAssembly: 'YourAppAssemblyName.Assets.dll', debug: true });
5. 更新调试配置
检查Properties/launchSettings.json,确保浏览器启动配置指向正确的端口,且调试器类型为WebAssembly:
{ "profiles": { "YourApp.Wasm": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:5001", "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}" } } }
6. 重新构建并运行
执行以下命令确保依赖和构建流程正确:
dotnet clean dotnet restore dotnet build dotnet run --project YourApp.Wasm.csproj
额外注意事项
- 不要混合不同版本的Avalonia包,所有相关依赖版本必须一致;
- 如果仍有问题,可以直接用Avalonia 11.2.2的模板创建新的Wasm项目,对比配置文件和启动脚本的差异,逐步迁移你的代码。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

