Проблема с созданием начальной миграции в ASP.Net Core

avatar
Pilapodapostache
7 апреля 2018 в 22:54
342
1
1

Я работаю над основами проекта ASP.Net Core MVC, и мне интересно, почему я не могу создать свою первоначальную миграцию.

Я захожу в папку проекта и запускаю "dotnet ef" в CMD и получаю сообщение об ошибке "Не найден исполняемый файл, соответствующий команде 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)

avatar
Mike
8 апреля 2018 в 12:13
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 содержит эквивалентные инструменты, но для консоли диспетчера пакетов Nuget в Visual Studio

Pilapodapostache
8 апреля 2018 в 20:04
0

Спасибо! По какой-то причине, когда я добавил пакет через NuGet, он пометил пакет как «PackageReference», а не как инструмент.... Спасибо VS2017! :)

Mike
8 апреля 2018 в 20:28
0

@Pilapodapostache да, в настоящее время это не может произойти автоматически (пока? Я видел проблему на GitHub много лет назад). Вы должны отредактировать файл csproj вручную.