【问题标题】:Issue with creating initial migration in ASP.Net Core在 ASP.Net Core 中创建初始迁移的问题
【发布时间】:2018-04-07 22:54:29
【问题描述】:

我一直在研究 ASP.Net Core 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 更高的版本,所以我不知道在这里做什么。

感谢任何帮助。

谢谢

【问题讨论】:

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


    【解决方案1】:

    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 (&gt;= 2.0.6)。所以你应该没问题。有关更多版本和依赖项,请查看:nuget.org

    Microsoft.EntityFrameworkCore.Tools 包含等效的tools,但用于Visual Studio 中的 Nuget 包管理器控制台

    【讨论】:

    • 谢谢!出于某种原因,当我通过 NuGet 添加包时,它将包标记为“PackageReference”而不是工具....感谢 VS2017! :)
    • @Pilapodapostache 是的,目前还没有办法自动发生这种情况(但是?我很久以前在 GitHub 上看到过一个问题)。您必须手动编辑csproj 文件。
    猜你喜欢
    • 2020-02-09
    • 2020-11-18
    • 2020-07-10
    • 2021-07-26
    • 2011-05-05
    • 2021-10-14
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多