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

解决dotnet publish部署Blazor WASM时的WASM0005错误

解决Blazor WebAssembly托管应用发布到IIS时的WASM0005错误

问题场景

执行以下dotnet publish命令部署Blazor WebAssembly托管应用到IIS时:

location of server project> dotnet publish -c Release  -r win-x64 --self-contained false --output {AppDir}

出现错误:

C:\Users\..\.nuget\packages\microsoft.net.sdk.webassembly.pack\8.0.0\build\Microsoft.NET.Sdk.WebAssembly.Browser.targets(231,5): error WASM0005: Unable to resolve WebAssembly runtime pack version [C:\Users\..\Desktop\BlazorHosted\BlazorHosted\Client\BlazorHosted.Client.csproj]

后续测试中,即使创建.NET 7.0测试项目(但NuGet中webassembly.pack版本为8.0)、更新Visual Studio 2022到最新版本并新建.NET 8.0.2项目,错误依旧出现,错误指向的MSBuild目标代码为:

<Target Name="_GetWasmRuntimePackVersion">
  <PropertyGroup>
    <_WasmRuntimePackVersion>%(ResolvedRuntimePack.NuGetPackageVersion)</_WasmRuntimePackVersion>
  </PropertyGroup>

  <Error Code="WASM0005" Text="Unable to resolve WebAssembly runtime pack version" Condition="'$(_WasmRuntimePackVersion)' == ''" />
</Target>

解决方案

  • 移除发布命令中的运行时标识符参数:Blazor WebAssembly客户端项目不需要-r win-x64这类运行时标识符(WASM本身跨平台),仅服务器项目可能需要。修改命令为:

    dotnet publish -c Release --self-contained false --output {AppDir}
    

    若必须为服务器指定运行时,可单独发布服务器项目,客户端保持默认配置。

  • 统一项目.NET SDK版本:确保解决方案中Server、Client、Shared项目的<TargetFramework>版本一致(比如都为net8.0或net7.0);删除C:\Users\<你的用户名>\.nuget\packages\microsoft.net.sdk.webassembly.pack下的多版本文件夹,执行dotnet restore重新恢复依赖。

  • 手动指定WebAssembly运行时包版本:在客户端项目的.csproj中添加配置,强制匹配项目.NET版本:

    <PropertyGroup>
      <WasmRuntimePackVersion>8.0.2</WasmRuntimePackVersion> <!-- 替换为项目对应.NET版本号 -->
    </PropertyGroup>
    
  • 检查Visual Studio工作负载:打开Visual Studio安装程序,确认已安装对应版本的WebAssembly构建工具(如.NET 8.0选“.NET 8.0 WebAssembly构建工具”),安装完成后重启再尝试发布。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:07:16