EF核心错误 - 未找到任何项目.更改当前工作目录或使用--project选项

Shi*_*iva 21 ef-code-first ef-migrations entity-framework-core .net-core dotnet-cli

我正在使用Visual Studio 2015和dotnet核心并尝试使用Sqlite和本文档/教程开发EF Core Code First项目,该项目还使用了Sqlite => .NET Core - 新数据库

当我尝试通过发出以下命令从命令行添加初始迁移(我CD-ed到我的数据模型项目所在的文件夹中)

dotnet ef migrations add InitialMigration
Run Code Online (Sandbox Code Playgroud)

...我得到以下错误.

在此输入图像描述

没有找到任何项目.更改当前工作目录或使用--project选项.

我甚至试过使用这样的--project选项.

> dotnet --project "C:\Shiva\EF\EFCFSqlite.Data.xproj"  ef migrations add InitialMigration
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误.

Unknown option: --project
.NET Command Line Tools (1.0.0-preview2-003131)
Usage: dotnet [host-options] [command] [arguments] [common-options]
Run Code Online (Sandbox Code Playgroud)

我注意到文档正在使用.csproj文件而我的Project正在显示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"
    }
  }
Run Code Online (Sandbox Code Playgroud)

发生了什么变化?我们别无选择,只能安装Visual Studio 2017并从头开始?是否project.json以及所有这些其他的东西不再受到尊重?

对我来说似乎是一个巨大的变化,如果是这样:(

Aks*_*hra 32

有时您需要更改控制台/终端中的当前目录,例如:

PM> cd E:\Projects\CrossTest\
PM> dotnet ef migrations add InitialMigration
Run Code Online (Sandbox Code Playgroud)

并对齐您的包版本. 使用preview1包或preview2.不支持这些的混合.

  • 这就是我的情况.我不得不用双引号括起整个路径.`PM> cd"E:\ Projects\CrossTest \"`它对我来说就像魅力一样. (4认同)
  • 对于大多数访问此页面的人来说,“ cd MyProjectSubfolder”这个答案可能是“正确”的答案。它对我有用:) (3认同)
  • @AkshayMishra 非常感谢,这是我的问题,我必须使用 cd 指向正确的项目目录。天救星! (2认同)
  • 这是侵入性最小的答案,并且使用 .Net Core 5.0 对我也有效。我只需指向正确的目录而不更改任何配置。 (2认同)

TAH*_*URI 23

这只是意味着

您不在当前项目目录中

使用.

我正在执行的命令:

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
Run Code Online (Sandbox Code Playgroud)

导致相同的错误,然后我检查了包管理器控制台中的当前工作目录,发现不正确。

就我而言

在此处输入图片说明

意味着我不在当前项目目录中然后切换目录

光盘 SSGCApp

现在您在项目目录中可以运行命令。

  • 谢谢。那是我的问题。运行“dir”命令后,它最初看起来像是正确的文件夹,但当我查看 Windows 资源管理器时,我发现我需要再深入一个文件夹才能到达 .csproj 文件的位置。转到该目录,然后运行 ​​ef migrations add 命令。 (3认同)

Gys*_*yer 11

代替:

"tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet":"1.0.0"
  },
Run Code Online (Sandbox Code Playgroud)

尝试:

"tools": {
      "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.0.0-preview3-final"
  }},
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这就是为什么我高度不推荐任何人在v3.xx之前不使用ASP.NET Core,它是依赖地狱和版本地狱. (8认同)

Qur*_*tor 9

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

<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