Scaffold-DbContext在.NET Core中出现“未找到程序集”的错误。

6
我正在使用 .net core 和 entity framework core 1.1.0。在尝试以下命令时,请使用包管理器控制台
Scaffold-DbContext "Server=MyServer\\MyInstance;Database=MyDB;user=MyUsername;password=MyDbPassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1,Table2

我遇到了这个错误

找不到程序集 'D:\Work\Projects\src\MyProject\src\MyProject.Api.\bin\Debug\net461\win7-x64\MyProject.Data.exe'。

MyProject.Data是一个.Net Core库。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": {}
  }
}

有什么建议可以提供给我吗?

你可以尝试使用.NET命令行工具:dotnet ef dbcontext scaffold ... - bricelam
2个回答

13

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

有两种解决此问题的方法:

  1. 右键单击要在其上运行此命令的项目(在您的情况下为 MyProject.Data),然后选择设置为启动项目
  2. 您可以向 scaffold-DBContext 命令传递参数,在运行命令时将特定项目设置为启动项目。这是您需要在命令末尾添加的内容...

-StartupProject MyProject.Data


3
在执行命令时使用了-StartupProject MyProject.Data,这对我很有帮助,非常感谢。 - Andrew
是的!!这个有效。Scaffold-DbContext "Server=(LocalDb)\MSSQLLocalDb;Database=MyDbName;Trusted_Connection=True;ConnectRetryCount=0" -StartupProject MyProject -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force - Andy

7

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

切换到AnyCPU可以解决该问题。


1
同意,我也遇到了同样的问题。谢谢。 - Niklas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接