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.

引自:http://errummwelluhh.blogspot.com

有时您需要更改 console/terminal 中的当前目录,例如:

PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration

和 调整您的包版本。 使用预览版 1 包或预览版 2。 不支持混合使用。

  1. 添加 nuget 包 Microsoft.EntityFrameworkCore.Tools
  2. 添加 nuget 包 Microsoft.EntityFrameworkCore.Design
  3. 右键单击您的项目文件,select Edit 然后将以下内容添加到包含 PackageReference 个节点
  4. ItemGroup

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />

(可以在Nuget包管理器中找到最新版本)

  1. 打开包管理控制台:工具->Nuget包管理器->包管理器控制台
  2. 键入 cd {path where your csproj file resides}(这很重要)
  3. 现在输入 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

不用担心。