Blazor Web App部署Ubuntu服务器出现System.TypeLoadException异常
解决方案
1. 清理项目残留编译文件与缓存
- 删除项目根目录下的
bin和obj文件夹,彻底清除.NET7时代的编译产物 - 在Visual Studio中依次执行清理解决方案→重建解决方案,避免增量构建带来的旧依赖残留
- 发布时勾选重新生成所有项目选项,确保发布包完全基于.NET8构建
2. 排查并升级第三方NuGet包
- 用
dotnet list package命令列出所有引用的NuGet包,检查是否有标注仅支持.NET7的包,替换为适配.NET8的版本 - 执行
dotnet restore --force强制刷新依赖源,确保所有包拉取的是兼容.NET8的最新版本
3. 修正项目文件配置
- 打开项目的
.csproj文件,确认<TargetFramework>节点值为net8.0,删除任何残留的net7.0相关配置 - 添加版本绑定配置,强制核心库使用.NET8版本,避免自动版本重定向出错:
<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.NET.Sdk.Web" Version="8.0.*" /> </ItemGroup>
4. 确认Ubuntu服务器的.NET运行时环境
- 执行
dotnet --list-runtimes命令,确保服务器已安装ASP.NET Core 8.0运行时,且版本号与项目使用的.NET8补丁版本匹配 - 如果使用自包含发布,发布时指定正确的运行时标识,例如:
dotnet publish -c Release -r linux-x64 --self-contained true
5. 检查组件中的动态类型加载逻辑
- 异常发生在组件渲染阶段,重点排查抛出异常的组件是否使用了反射、
Activator.CreateInstance或第三方序列化工具 - 确保动态加载的类型、属性没有硬编码引用.NET7版本的
System.Runtime或其他核心库
内容的提问来源于stack exchange,提问作者GerardF
相关产品推荐
相关产品推荐

