Scaffold-DbContext在.net核心中抛出错误“找不到程序集”

时间:2016-11-25 11:32:36

标签: c# .net entity-framework-core .net-core scaffolding

我正在使用.net核心和实体框架核心1.1.0。在程序包管理器控制台

中尝试以下命令时
Scaffold-DbContext "Server=MyServer\\MyInstance;Database=MyDB;user=MyUsername;password=MyDbPassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1,Table2

我收到此错误

  

找不到装配   'd:\工作\项目\ SRC \ MyProject的\ SRC \ MyProject.Api \ BIN \调试\ net461 \ WIN7-64 \ MyProject.Data.exe'。

MyProject.Data是一个网络核心库。 MyProject.Api是一个.net完整框架核心api,它引用了MyProject.Data。

MyProject.Data的project.json文件

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },

  "frameworks": {
    "net461": {}
  }
}

对我有什么建议吗?

2 个答案:

答案 0 :(得分:5)

不确定这是否是错误,但scaffold-dbcontext命令在启动项目中查找程序集。

此问题有两种解决方法

  1. 右键单击要运行此命令的项目(在您的情况下,它是MyProject.Data)并选择设置为启动项目
  2. 您可以在scaffold-DBContext命令中添加一个开关,以便在运行命令时将特定项目设置为启动项目。 这是您需要在命令结束时添加...

    -StartupProject MyProject.Data

答案 1 :(得分:3)

如果目标平台是 x86,似乎也会出现此问题。

切换到 AnyCPU 可以解决问题。