我正在使用.net core和entity Framework core 1.1.0。在 Package Manager Console
中尝试以下命令时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.in\Debug et461\win7-x64\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": {}
}
}
有什么建议给我吗?
不确定这是否是一个错误,但
scaffold-dbcontext
命令在启动项目中查找程序集。
此问题有两种解决方法
scaffold-DBContext
命令传递参数,以在运行该命令时将特定项目设置为启动项目。
这是您需要在命令末尾添加的内容...-StartupProject MyProject.Data
如果目标平台是x86,似乎也会出现此问题。
切换到AnyCPU即可解决问题。
我一直在尝试搭建 FireBird 数据库。 第一个问题是 FireBird 文件是用 32 位制作的。 因此,我的项目必须以 x86 为目标。 然后我收到消息“无法加载程序集,确保它被启动项目引用”。 删除这些消息的解决方案是:
fbembed.dll
icudt30.dll
icuuc30.dll
msvcr80.dll
与 csproj 并排复制上面添加
C:\Program Files (x86)\dotnet\
C:\Program Files\dotnet\
& 'C:\Program Files (x86)\dotnet\dotnet.exe' ef dbcontext scaffold "ServerType=1;Database=PATH_TO_THE_FDB;user id=THE_USER;password=THE_PASSWORD" FirebirdSql.EntityFrameworkCore.Firebird --configuration=debug --verbose
, ServerType=1 用于在嵌入模式下使用 Firebird 帮助我走这条路的是这个github问题,Procmon然后帮助我看到dotnet进程是x64的。