在 ASP.Net Core 中创建初始迁移时出现问题

Issue with creating initial migration in ASP.Net Core

我一直在研究 ASP.Net 核心 MVC 项目的基础知识,我想知道为什么我无法创建初始迁移。

我进入项目文件夹并在 CMD 中 运行 "dotnet ef" 并收到错误 "No executable found matching command dotnet-ef"。

我觉得这很奇怪,所以我尝试在 VS2017 中构建我的应用程序,但我收到了这个错误:

Severity    Code    Description Project File    Line    Suppression State
Error   NU1605  Detected package downgrade: Microsoft.NETCore.App from 2.0.6 
to 2.0.0. Reference the package directly from the project to select a 
different version. 
 FiberLocator -> Microsoft.EntityFrameworkCore.Tools.DotNet 2.0.2 -> 
Microsoft.NETCore.App (>= 2.0.6) 
FiberLocator -> Microsoft.NETCore.App (>= 2.0.0)    FiberLocator     
C:\Users\user\Google Drive\ASP.Net Core 
Projects\FiberLocator\FiberLocator.csproj   1   

我的 .csproj 文件如下所示。

  <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="Data\Migrations\" />
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3" />
  </ItemGroup>



  </Project>

据我了解,..Tools.DotNet 是使我能够使用 "dotnet ef" 的软件包。在撰写本文时,我什至尝试将版本设置为最新版本(甚至是预览版本),但它仍然无法正常工作,从上面给了我 "unknown command" 错误。

如何将我的 NETCore.App 包更改为 2.0.0,或者让 Tools.DotNet 包兼容? NuGet 站点上没有高于 2.0.2 的版本,所以我不知道该怎么做。

感谢任何帮助。

谢谢

Microsoft.EntityFrameworkCore.Tools.DotNet 是 dotnet-ef 命令行工具。为了在您的项目中使用它,请将 csproj 中引用它的元素从 PackageReference 更改为 DotNetCliToolReference。像这样:

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

版本 2.0.2 需要 Microsoft.NETCore.App (>= 2.0.6)。所以你应该没问题。有关更多版本和依赖项,请查看:nuget.org

Microsoft.EntityFrameworkCore.Tools 包含等效的 tools,但对于 Visual Studio

中的 Nuget 程序包管理器控制台