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

EF6.exe在不同环境执行时抛出System.TypeLoadException问题求助

EF6迁移报错:System.TypeLoadException 解决方案

问题根源

报错Could not load type 'System.Data.Entity.Infrastructure.Design.Executor+Update'本质是EF6程序集版本不匹配或部署环境中存在程序集冲突/缓存,尽管测试环境正常,但预发布环境的部署流程或服务器状态可能存在差异。

具体修复步骤

1. 核对预发布服务器的EF6程序集版本

登录预发布服务器,检查部署目录下EntityFramework.dll的版本,必须和测试环境完全一致(包括主版本、次版本及公钥令牌)。用PowerShell验证:

(Get-Item .\EntityFramework.dll).VersionInfo | Select-Object ProductVersion, FileVersion

如果版本不符,彻底清理预发布部署目录,重新部署完整的应用包。

2. 确保ef6.exe与EF6程序集版本严格对应

部署脚本中使用的ef6.exe必须和项目引用的EF6版本完全匹配,不能混用不同版本的工具。直接使用项目NuGet包目录中的ef6.exe(路径示例:packages\EntityFramework.6.4.4\tools\ef6.exe)替换脚本中的工具路径。

3. 验证配置转换后的EF配置完整性

对比测试与预发布环境的最终app.config,确保<entityFramework>配置节完全一致(仅数据库连接字符串不同)。配置转换可能意外修改了EF的程序集绑定或迁移配置节点,导致类型加载失败。可以手动复制测试环境的app.config,替换连接字符串后在预发布环境测试迁移。

4. 清理预发布服务器的程序集缓存

服务器可能残留旧版本EF程序集缓存,执行以下操作:

  • 删除部署目录下的临时文件、bin/obj文件夹(若存在)
  • 若服务器GAC中存在旧版本EF,执行清理(需管理员权限):
    gacutil /u EntityFramework
    

5. 优化迁移脚本,显式指定关键参数

修改PowerShell脚本,调用ef6.exe时显式指定程序集、配置类等参数,避免自动加载错误的资源:

.\ef6.exe database update `
  --assembly .\YourApplication.dll `
  --configuration YourAppNamespace.Migrations.Configuration `
  --connection-string "Data Source=PreReleaseDB;Initial Catalog=YourDB;Integrated Security=True" `
  --connection-provider "System.Data.SqlClient"

6. 确认.NET Framework版本兼容性

确保预发布服务器安装的.NET Framework版本与测试环境一致,EF6最低要求.NET Framework 4.5,版本过低会导致类型加载异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:32:30