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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:58:19