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

执行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项目的程序集能被启动项目访问:

    1. 在启动项目中找到对Marel.Lairage.Innova.Data的引用
    2. 右键引用→属性,将"复制本地"设置为True
      这样启动项目的bin目录会自动包含迁移程序集,避免命令行找不到文件。
  • 验证DbContext与迁移程序集的归属
    确认LairageContext所在的项目是否引用了Marel.Lairage.Innova.Data,同时迁移类(之前生成的xxxMigration文件)确实在Marel.Lairage.Innova.Data项目内。如果DbContext在其他项目,要确保迁移项目引用了DbContext所在项目。

  • 清理并重新生成解决方案
    执行以下操作清除缓存:

    1. 右键解决方案→清理解决方案
    2. 右键解决方案→重新生成解决方案
      缓存的旧程序集可能导致命令行识别错误,重新生成后再尝试迁移命令。
  • 确认命令行工作目录
    使用Dotnet CLI时,确保当前终端的工作目录是解决方案根目录,而不是单个项目的目录。如果在项目目录下执行命令,可能无法正确定位其他项目的程序集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:20:44