EF Core 错误 - 未找到项目。更改当前工作目录或使用 --project 选项
EF Core Error - No project was found. Change the current working directory or use the --project option
我正在使用 Visual Studio 2015 和 dotnet core 并尝试使用 Sqlite 和开发一个 EF Core Code First 项目本文档/教程,也使用 Sqlite => NET Core - New Database
当我尝试通过发出以下命令从命令行添加初始迁移(我被 CD 到我的数据模型项目所在的文件夹中)时
dotnet ef migrations add InitialMigration
...我收到以下错误。
No project was found. Change the current working directory or use the --project option.
我什至试过像这样使用 --project
选项。
> dotnet --project "C:\Shiva\EF\EFCFSqlite.Data.xproj" ef migrations add InitialMigration
但是会出现以下错误。
Unknown option: --project
.NET Command Line Tools (1.0.0-preview2-003131)
Usage: dotnet [host-options] [command] [arguments] [common-options]
我注意到文档使用的是 .csproj
文件,而我的项目显示的是 xproj
文件。文档还提到了一些关于不再使用 project.json
的内容:(
这是我的 project.json
文件。
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite": "1.1.1",
"Microsoft.EntityFrameworkCore.Sqlite.Design": "1.1.1",
"NETStandard.Library": "1.6.1"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
发生了什么变化?我们别无选择,只能 安装 Visual Studio 2017 并从头开始吗? project.json
和所有其他东西不再受到尊重了吗?
如果是这样的话,对我来说似乎是一个巨大的改变:(
而不是:
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
},
尝试:
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": {
"version": "1.0.0-preview3-final"
}},
刚遇到类似的问题。通过降级到 1.0.0-preview3-final
修复
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
}
并将 --project 参数更改为 --startup-project
dotnet ef --startup-project <PATH_TO_PROJECT_DIRECTORY> migrations add <MIGRATION_NAME>
在global.json我也降了版本到
"sdk": {
"version": "1.0.0-preview2-003131"
}
这可能是迁移到 csproj 之前的临时解决方法。
The dotnet-ef command has moved.
You will need to add a reference to
Microsoft.EntityFrameworkCore.Tools.DotNet AND
Microsoft.EntityFrameworkCore.Design to your dependencies in
project.json, then add Microsoft.EntityFrameworkCore.Tools.DotNet to the tools section and you should be good to go.
有时您需要更改 console/terminal 中的当前目录,例如:
PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration
和
调整您的包版本。
使用预览版 1 包或预览版 2。
不支持混合使用。
- 添加 nuget 包
Microsoft.EntityFrameworkCore.Tools
- 添加 nuget 包
Microsoft.EntityFrameworkCore.Design
- 右键单击您的项目文件,select
Edit
然后将以下内容添加到包含 PackageReference
个节点 的 ItemGroup
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
(可以在Nuget包管理器中找到最新版本)
- 打开包管理控制台:工具->Nuget包管理器->包管理器控制台
- 键入
cd {path where your csproj file resides}
(这很重要)
- 现在输入
dotnet ef migrations add InitialMigration
它只是意味着
YOU ARE NOT IN CURRENT PROJECT DIRECTORY
我在使用 this.
构建 MySql 的现有数据库时遇到了同样的问题
我正在执行的命令:
dotnet ef dbcontext scaffold "Server=123.1.1.1;Uid=abc;Pwd=abc;Database=myDB;Connection Timeout=20;Persist Security Info=False;Port=3306;Allow User Variables=True;Connect Timeout=120;" MySql.Data.EntityFrameworkCore -o Models
导致同样的错误,然后我检查了包管理器控制台中的当前工作目录,发现不正确。
就我而言
意味着我在切换目录后不在当前项目目录中
cd SSGCApp
现在你在项目目录下一切顺利运行命令。
显然,这听起来可能很有趣,但就我而言,当我收到此错误时,我使用了应用程序的服务器端 运行。基本上,确保您的应用在尝试创建迁移时根本不是 运行。正如我所说,对我来说,这就是治愈方法。对于那些无法按照标记的答案修复它的人来说可能会有一些建议。
添加引用 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.Tools
然后运行:
dotnet-ef migrations add InitialCreate --project ProjectName
或
dotnet ef migrations add InitialCreate --project ProjectName
只需简单地使用这个命令。
Add-Migration InitialCreated -c bodoContext
不用担心。
我正在使用 Visual Studio 2015 和 dotnet core 并尝试使用 Sqlite 和开发一个 EF Core Code First 项目本文档/教程,也使用 Sqlite => NET Core - New Database
当我尝试通过发出以下命令从命令行添加初始迁移(我被 CD 到我的数据模型项目所在的文件夹中)时
dotnet ef migrations add InitialMigration
...我收到以下错误。
No project was found. Change the current working directory or use the --project option.
我什至试过像这样使用 --project
选项。
> dotnet --project "C:\Shiva\EF\EFCFSqlite.Data.xproj" ef migrations add InitialMigration
但是会出现以下错误。
Unknown option: --project
.NET Command Line Tools (1.0.0-preview2-003131)
Usage: dotnet [host-options] [command] [arguments] [common-options]
我注意到文档使用的是 .csproj
文件,而我的项目显示的是 xproj
文件。文档还提到了一些关于不再使用 project.json
的内容:(
这是我的 project.json
文件。
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.Sqlite": "1.1.1",
"Microsoft.EntityFrameworkCore.Sqlite.Design": "1.1.1",
"NETStandard.Library": "1.6.1"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
发生了什么变化?我们别无选择,只能 安装 Visual Studio 2017 并从头开始吗? project.json
和所有其他东西不再受到尊重了吗?
如果是这样的话,对我来说似乎是一个巨大的改变:(
而不是:
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
},
尝试:
"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": {
"version": "1.0.0-preview3-final"
}},
刚遇到类似的问题。通过降级到 1.0.0-preview3-final
修复"tools": {
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final",
}
并将 --project 参数更改为 --startup-project
dotnet ef --startup-project <PATH_TO_PROJECT_DIRECTORY> migrations add <MIGRATION_NAME>
在global.json我也降了版本到
"sdk": {
"version": "1.0.0-preview2-003131"
}
这可能是迁移到 csproj 之前的临时解决方法。
The dotnet-ef command has moved.
You will need to add a reference to Microsoft.EntityFrameworkCore.Tools.DotNet AND Microsoft.EntityFrameworkCore.Design to your dependencies in project.json, then add Microsoft.EntityFrameworkCore.Tools.DotNet to the tools section and you should be good to go.
有时您需要更改 console/terminal 中的当前目录,例如:
PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration
和 调整您的包版本。 使用预览版 1 包或预览版 2。 不支持混合使用。
- 添加 nuget 包
Microsoft.EntityFrameworkCore.Tools
- 添加 nuget 包
Microsoft.EntityFrameworkCore.Design
- 右键单击您的项目文件,select
Edit
然后将以下内容添加到包含PackageReference
个节点 的
ItemGroup
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
(可以在Nuget包管理器中找到最新版本)
- 打开包管理控制台:工具->Nuget包管理器->包管理器控制台
- 键入
cd {path where your csproj file resides}
(这很重要) - 现在输入
dotnet ef migrations add InitialMigration
它只是意味着
YOU ARE NOT IN CURRENT PROJECT DIRECTORY
我在使用 this.
构建 MySql 的现有数据库时遇到了同样的问题我正在执行的命令:
dotnet ef dbcontext scaffold "Server=123.1.1.1;Uid=abc;Pwd=abc;Database=myDB;Connection Timeout=20;Persist Security Info=False;Port=3306;Allow User Variables=True;Connect Timeout=120;" MySql.Data.EntityFrameworkCore -o Models
导致同样的错误,然后我检查了包管理器控制台中的当前工作目录,发现不正确。
就我而言
意味着我在切换目录后不在当前项目目录中
cd SSGCApp
现在你在项目目录下一切顺利运行命令。
显然,这听起来可能很有趣,但就我而言,当我收到此错误时,我使用了应用程序的服务器端 运行。基本上,确保您的应用在尝试创建迁移时根本不是 运行。正如我所说,对我来说,这就是治愈方法。对于那些无法按照标记的答案修复它的人来说可能会有一些建议。
添加引用 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.Tools
然后运行:
dotnet-ef migrations add InitialCreate --project ProjectName
或
dotnet ef migrations add InitialCreate --project ProjectName
只需简单地使用这个命令。
Add-Migration InitialCreated -c bodoContext
不用担心。