.NET6 Blazor WASM项目dotnet publish报错:同名键已添加
解决.NET 6 Blazor WASM 发布重复资源报错方案
根因说明
你遇到的是.NET 6 RC预览版本的已知Bug,Blazor WASM发布阶段生成压缩静态资源时,旧版本构建缓存和预览版SDK/包的逻辑缺陷会导致重复资源键冲突。
排查&解决步骤
1. 彻底清理构建缓存
优先删除所有残留的旧构建产物,避免缓存干扰:
- 手动删除项目根目录、解决方案根目录下所有的
bin、obj文件夹,以及之前生成的output发布输出文件夹 - 若使用Git管理代码,可直接执行
git clean -xdf一键清理所有未跟踪的构建缓存文件
2. 统一升级SDK与Nuget包到正式版
你当前使用的SDK、Nuget包均为RC2预览版,该版本本身存在此未修复的问题:
- 构建服务器和本地环境都卸载.NET 6 RC预览版SDK,安装.NET 6 正式版SDK(6.0.100及以上稳定版本)
- 把项目中所有Blazor相关Nuget包从
6.0.0-rc.2.*预览版升级到6.0.0及以上稳定版,包括:- Microsoft.AspNetCore.Components.WebAssembly
- Microsoft.AspNetCore.Components.WebAssembly.DevServer
3. 临时禁用Blazor内置压缩(备选方案)
如果上述步骤仍未解决,可在项目.csproj文件中添加配置,跳过触发问题的压缩逻辑:
<PropertyGroup> <!-- 临时禁用发布时的自动压缩,后续版本稳定后可删除此配置 --> <BlazorEnableCompression>false</BlazorEnableCompression> </PropertyGroup>
后续可选择发布完成后手动对wwwroot下的静态资源做gzip/Brotli压缩,不影响项目功能使用。
4. 排查自定义发布逻辑
检查.csproj文件中是否存在自定义的静态资源复制Target,Blazor默认已经自动处理wwwroot目录资源的发布逻辑,额外添加的重复复制规则也会触发资源冲突,删除重复的自定义复制逻辑即可。
内容的提问来源于stack exchange,提问作者Brendan Green
相关产品推荐
相关产品推荐

