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

ASP.NET Core 2 API调用VB.NET程序集时出现TypeLoadException问题求助

解决TypeLoadException: 无法加载Microsoft.VisualBasic.DateAndTime的问题

我之前处理过不少.NET Framework到.NET Core迁移的类似案例,你的问题挺典型的——旧VB.NET程序集依赖传统.NET Framework下的Microsoft.VisualBasic类型,而ASP.NET Core的运行时环境和.NET Framework存在差异,导致类型加载失败。下面是一步步的解决思路:

1. 安装适配.NET Core的Microsoft.VisualBasic NuGet包

在.NET Core项目中,Microsoft.VisualBasic不是默认内置的,必须手动安装对应的NuGet包来提供兼容的类型实现:

  • 打开NuGet包管理器,搜索Microsoft.VisualBasic并安装(选择和ASP.NET Core 2.x兼容的稳定版本,比如10.3.0系列)
  • 或者用CLI命令快速安装:
    Install-Package Microsoft.VisualBasic -Version 10.3.0
    

2. 尝试将项目目标框架切换为.NET Framework(Windows环境适用)

如果你的项目只需要在Windows环境运行,ASP.NET Core 2支持将目标框架设置为.NET Framework 4.x(比如4.6.1及以上),这样能大幅提升对旧.NET Framework程序集的兼容性:

  • 编辑项目的.csproj文件,把<TargetFramework>节点修改为:
    <TargetFramework>net461</TargetFramework>
    
    重新加载项目后,运行时会使用.NET Framework的CLR,能更好地适配旧VB程序集的依赖。

3. 添加程序集绑定重定向

如果切换目标框架后仍有问题,或者必须使用.NET Core运行时,需要通过绑定重定向确保加载正确版本的Microsoft.VisualBasic:

  • 在项目的app.config(或web.config)中添加以下配置:
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Microsoft.VisualBasic" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.3.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
    注意将newVersion替换为你实际安装的NuGet包版本号。

4. 排查程序集的深层依赖

如果以上方法都无效,可能是旧VB程序集还依赖其他.NET Framework特有的类型。你可以用ILDasm或dotnet dump工具查看程序集的依赖项,确认是否有其他缺失的类型,再针对性解决。

另外提一句:ASP.NET Core 2已经是比较老旧的版本了,如果项目允许,升级到.NET Core 3.1或更高版本,对旧程序集的兼容性会更好,但这可能需要调整项目的其他依赖配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:45:28