在ASP.Net Core中创建初始迁移的问题

时间:2018-04-07 22:54:29

标签: c# asp.net-core .net-core entity-framework-core packages

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

我进入项目文件夹并在CMD中运行“dotnet ef”并收到错误“找不到匹配命令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”的软件包。我甚至尝试在编写本文时将版本设置为最新版本(甚至是预览版本),它仍然无效,从上面给出了“未知命令”错误。

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

感谢任何帮助。

由于

1 个答案:

答案 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的程序包管理器控制台