使用upgrade-assistant迁移时EF6保留与目标TFM设置问题
解决Upgrade Assistant升级EF6 DAL库时强制转NetStandard2.0并移除EF引用的问题
单项目快速处理方案
- 运行Upgrade Assistant时,针对DAL库单独指定目标TFM为NetStandard2.1,并跳过自动包移除操作,命令如下:
该命令会强制工具将DAL库升级到NetStandard2.1,同时保留EntityFramework引用,避免被自动删除。upgrade-assistant upgrade .\YourDALProject.csproj --target-tfm netstandard2.1 --skip-package-removal --target-tfm-support LTS
手动干预项目文件(命令参数不生效时)
- 暂停Upgrade Assistant的自动流程,手动编辑DAL项目的
.csproj文件:- 将原目标框架节点替换为:
<TargetFramework>netstandard2.1</TargetFramework> - 确保保留EF6的包引用,且版本升级到6.4.0及以上(比如最新的6.4.4):
<PackageReference Include="EntityFramework" Version="6.4.4" />
- 将原目标框架节点替换为:
- 重新运行Upgrade Assistant并选择继续处理该项目,工具会识别已配置的TFM,不再强制切换到NetStandard2.0,也不会删除EF6引用。
批量迁移配置(多项目场景)
针对公司大量项目的批量迁移需求,创建upgrade-assistant.json配置文件,统一指定类库的目标TFM并排除EF6包的自动移除:
{ "UpgradeSettings": { "TargetFrameworks": { "Library": "netstandard2.1" }, "PackageRemoval": { "ExcludePackages": ["EntityFramework"] } } }
运行工具时加载该配置:
upgrade-assistant upgrade .\YourSolution.sln --config upgrade-assistant.json --target-tfm-support LTS
关键注意事项
- 必须将EF6版本升级到6.4.0及以上:旧版本(如6.1.3)不支持任何NetStandard版本,这是工具报错的核心原因,升级到最新EF6版本才能完美兼容NetStandard2.1。
- 升级后检查DAL代码:EF6在NetStandard2.1下的API与.NET Framework版本基本一致,大部分现有代码无需修改,仅需验证少量涉及平台特定的操作(如本地文件访问)。
内容的提问来源于stack exchange,提问作者MuLy
相关产品推荐
相关产品推荐

