执行Add-Migration提示找不到引用程序集,但程序集已被引用
解决EF Core迁移时提示未引用程序集的问题
你遇到的问题是EF Core迁移命令没有正确识别你在Program.cs中指定的迁移程序集配置——虽然程序运行时能正常读取配置访问数据库,但迁移命令是独立于应用启动流程的,它不会直接读取Program.cs里的MigrationsAssembly设置,需要额外指定参数或调整项目配置。
以下是具体解决步骤:
直接在迁移命令中指定程序集
使用Dotnet CLI时,明确指定迁移所在项目和启动项目:dotnet ef migrations add [你的迁移名称] --project Marel.Lairage.Innova.Data --startup-project [你的启动项目名称]如果你使用Package Manager Console(Visual Studio内),执行:
Add-Migration [你的迁移名称] -Project Marel.Lairage.Innova.Data -StartupProject [你的启动项目名称]这个操作会强制迁移命令指向正确的程序集,绕过默认项目可能的识别问题。
检查迁移项目的输出复制设置
确保Marel.Lairage.Innova.Data项目的程序集能被启动项目访问:- 在启动项目中找到对
Marel.Lairage.Innova.Data的引用 - 右键引用→属性,将"复制本地"设置为
True
这样启动项目的bin目录会自动包含迁移程序集,避免命令行找不到文件。
- 在启动项目中找到对
验证DbContext与迁移程序集的归属
确认LairageContext所在的项目是否引用了Marel.Lairage.Innova.Data,同时迁移类(之前生成的xxxMigration文件)确实在Marel.Lairage.Innova.Data项目内。如果DbContext在其他项目,要确保迁移项目引用了DbContext所在项目。清理并重新生成解决方案
执行以下操作清除缓存:- 右键解决方案→清理解决方案
- 右键解决方案→重新生成解决方案
缓存的旧程序集可能导致命令行识别错误,重新生成后再尝试迁移命令。
确认命令行工作目录
使用Dotnet CLI时,确保当前终端的工作目录是解决方案根目录,而不是单个项目的目录。如果在项目目录下执行命令,可能无法正确定位其他项目的程序集。
内容的提问来源于stack exchange,提问作者CorrieJanse
相关产品推荐
相关产品推荐

