Blazor WASM共享项目加外部DLL依赖,部署IIS触发异常原因?
针对Blazor WASM部署IIS后TypeLoadException的解决方案
1. 统一Shared项目与Client项目的运行时配置
- 右键Shared项目 → 属性 → 生成,将目标运行时设置为
browser-wasm,平台目标设为Any CPU,确保和Client项目的运行时完全匹配(Blazor WASM仅支持浏览器WASM环境,不兼容桌面/服务器运行时编译的DLL)。 - 发布Shared项目时,勾选「生成依赖项的发布输出」,保证外部DLL被正确打包。
2. 确认Client项目对Shared的引用设置
- 在Client项目的引用列表中找到Shared项目,右键→属性,将复制本地设为
True,确保发布时Shared项目的所有输出(包括外部DLL)被复制到Client的发布目录。 - 检查Client项目的
.csproj文件,确认引用配置正确,示例:<ProjectReference Include="..\TestApp.Shared\TestApp.Shared.csproj"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </ProjectReference>
3. 验证IIS部署文件完整性
- 发布后查看Client项目的
wwwroot\_framework\bin目录,确认TestApp.Shared.dll和外部DLL都存在于此。 - 若文件缺失,手动复制外部DLL到该目录,随后重启IIS站点。
4. 清理重建并重新发布
- 执行解决方案清理:右键解决方案→清理解决方案
- 全量重建项目:右键解决方案→生成解决方案(确保无编译错误)
- 重新发布Client项目,勾选「删除目标位置的现有文件」,避免旧文件冲突。
5. 检查外部DLL兼容性
- 确认外部DLL是基于.NET 6编译的纯托管程序集,无.NET Framework专属API依赖(Blazor WASM不支持.NET Framework)。
- 若外部DLL包含原生代码(如C++库),需替换为Blazor WASM兼容的纯托管版本。
内容的提问来源于stack exchange,提问作者Harsh Bhadoria
相关产品推荐
相关产品推荐

