求助:.NET Core 2.0项目执行EF Core迁移时无法加载EF7程序集
解决EF Core迁移时找不到EF7程序集的问题
我之前在.NET Core项目里也遇到过类似的迁移工具报错情况,给你几个可行的排查和解决步骤:
1. 清理重建解决方案,清除编译缓存
有时候删除迁移文件后,旧的编译缓存会导致工具找不到最新的程序集。你可以:
- 关闭Visual Studio,手动删除所有项目下的
bin和obj文件夹 - 重新打开VS,依次执行清理解决方案(Clean Solution)和重建解决方案(Rebuild Solution)
- 之后再尝试执行迁移命令
2. 明确指定迁移目标项目
你当前的命令只指定了启动项目,但EF迁移工具需要明确知道哪个项目包含你的DbContext。修改命令试试:
使用.NET CLI
dotnet ef migrations add Initial --startup-project ..\Angular --project ..\EF7
使用包管理器控制台(PMC)
先在PMC的“默认项目”下拉框选择EF7,然后执行:
Add-Migration Initial -StartupProject Angular
或者直接完整指定参数:
Add-Migration Initial -Project EF7 -StartupProject Angular
3. 检查EF7项目的依赖和输出配置
- 确认
EF7项目的csproj文件中,所有EF相关包的版本一致,都是2.0.1:<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.1" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" /> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" /> - 检查
Angular项目对EF7项目的引用是否正常(没有黄色感叹号),右键Angular项目→依赖项→项目,确认EF7已正确添加。 - 查看
EF7项目的生成输出路径(右键项目→属性→生成),确保是默认的bin\Debug\netstandard2.0(匹配你的.NET Standard版本),没有被修改到其他位置。
4. 重置EF工具缓存
如果是EF工具本身的缓存问题,可以尝试重置:
针对.NET CLI
# 卸载全局EF工具 dotnet tool uninstall --global dotnet-ef # 重新安装对应版本的工具 dotnet tool install --global dotnet-ef --version 2.0.1
针对包管理器控制台
在PMC中执行:
Update-Package Microsoft.EntityFrameworkCore.Tools -Reinstall
5. 验证DbContext的配置位置
确保你的DbContext类确实在EF7项目中,并且Angular项目的Startup.cs里配置DbContext时引用的是EF7项目中的类,没有引用错误的程序集。比如:
using EF7.Data; // 确认这个命名空间来自EF7项目 public void ConfigureServices(IServiceCollection services) { services.AddDbContext<YourDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); // ...其他配置 }
内容的提问来源于stack exchange,提问作者benanderson89
相关产品推荐
相关产品推荐

