Термін «міграція додатків» не визнається


116

Я використовую цей підручник MSDN для запуску в VS2015 команди, PM> Add-Migration MyFirstMigration -context BloggingContextяка успішно працювала вчора, але сьогодні вона видає таку помилку, на яку також вказують інші користувачі тут . Я навіть видалив папку Міграції з провідника рішень і відповідну базу даних з SQL Express 2014 on Win 8.1тієї ж помилки. Навіть якщо я запускаю, Add-Migration MyFirstMigrationя отримую ту ж помилку:

Add-Migration : The term 'Add-Migration' is not recognized as the name of a cmdlet, function, script file, or operable program. 
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Add-Migration MyFirstMigration -context BloggingContext
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Примітка . Я використовую останню версію ASP.NET Core 1.0 та VS2015 - оновлення 3, випущене 27 червня 2016 року.

ОНОВЛЕННЯ

Наступні команди чудово працюють із каталогу проекту в провіднику Windows при використанні командного вікна:

> dotnet ef migrations add MyFirstMigration --context BloggingContext
> dotnet ef database update --context BloggingContext

ОНОВЛЕННЯ 2a

Нижче наведено файл project.json:

{
  "userSecretsId": "aspnet-ASPCore_RTM_CodeFirst_test-bef835d9-9831-41a8-bc3a-cd2f1477a880",

  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": {
      "version": "1.0.0",
      "type": "build"
    },
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "BundlerMinifier.Core": "2.0.238",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
      "version": "1.0.0-preview2-final",
      "imports": [
        "portable-net45+win8"
      ]
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "prepublish": [ "bower install", "dotnet bundle" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Будь ласка, не вбивайте теги в заголовок
— Ценг

напишіть будь ласка ваш project.json Я хочу переглянути ваші пакети
— Бассам Алуджілі

@BassamAlugili за вашим запитом, я додав ОНОВЛЕННЯ 2 у своєму дописі, щоб додати відповідний розділ файлу peoject.json. Будь ласка, повідомте мене, якщо вам потрібна додаткова інформація
— нам

Ви отримали відповідь від @briceIam (команда EF). Думаю, це спрацює!
— Bassam Alugili

@BassamAlugili Я додав весь вміст файлу project.json у розділі UPDATE 2 мого допису. Будь ласка, дивіться мої коментарі під відповіддю від @bricelam. Чого мені може не вистачати?
— nam

Відповіді:


231

Це так просто.

Просто встановіть Microsoft.EntityFrameworkCore.Toolsпакет з nuget:

Встановити пакет Microsoft.EntityFrameworkCore.Tools -Версія 3.1.5

Ви також можете використовувати це посилання, щоб встановити останню версію: посилання на пакет Nuget

Команда .NET CLI:

dotnet add package Microsoft.EntityFrameworkCore.Tools

Я встановив версію 2.2.6, оскільки я все ще використовую Visual Studio 2017.
— BluE

Велике спасибі, це загальна помилка, яку роблять усі
— Нітеш Шоу

1
Мені також потрібно було перезапустити Visual Studio
— Liviu Sosu

48

Спробуйте наступні кроки:

1) Відкрийте project.jsonфайл і видаліть усі посилання на Microsoft.EntityFrameworkCore.Tools із розділів залежностей та інструментів .

2) Закрийте консоль диспетчера пакетів ( PMC ) і перезапустіть Visual Studio

3) Додайте до розділу залежностей :

 "Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
 }

4) Додати в розділі інструменти

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"

5) Перезапустіть Visual Studio 2015

6) Відкрити ПМК і тип

Add-Migration $Your_First_Migration_Name$

Це відбувається тому, що PMC розпізнає інструменти під час запуску Visual Studio.


5
Я ледве проходжу годину кодування на VS2015, не вимагаючи чогось перезапускати / перевстановлювати ...
— Райан Мерфі

37

Переконайтеся, що на Microsoft.EntityFrameworkCore.Toolsнього посилається в dependenciesрозділі вашого project.json. NuGet не завантажує команди диспетчера пакетів із toolsрозділу. (Див. NuGet / Домашній номер 3023 )

{
  "dependencies": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  }
}

2
Я скопіював весь вміст файлу project.json в ОНОВЛЕННЯ 2 мого допису. Також Microsoft.EntityFrameworkCore.Toolsзнаходиться розділ внутрішніх залежностей. Команди Add-Migrationі Update-Database, як зазначено в підручнику, працювали напередодні. Але коли я спробував їх наступного ранку після внесення незначних змін у свою модель і спробував ці команди знову, вони видали повідомлення про помилку, описане в моєму дописі. Я навіть видалив папку "Міграція" та відповідну базу даних із SQL Server, але після запуску цих команд отримав те саме повідомлення про помилку. Чого мені може не вистачати?
— nam

У мене також є ці симптоми. Я використовую Visual Studio 2015 Update 3
— Kolya_Net

Спробуйте подати помилку на NuGet із відтворюваними кроками та великою кількістю інформації про довкілля. Я вже згадував про проблеми в цій галузі перед командою, але вони ніколи не можуть докорити їх.
— bricelam

1
Дивно, це вирішує мою проблему, якщо я видалю її toolsта знову додаю після. Просто переміщення його до dependenciesпризведе до появи такого повідомлення про помилку: Не вдається виконати цю команду, оскільки 'Microsoft.EntityFrameworkCore.Tools' не встановлено в проекті 'src \ <ваш проект>. Додайте "Microsoft.EntityFrameworkCore.Tools" до розділу "Інструменти" в project.json. Докладніше див. На сторінці go.microsoft.com/fwlink/?LinkId=798221 .
— Торстен Вестхайдер

Я використовую VS2017 ASP.NET Core і мав ту саму проблему. Ця відповідь це також вирішила!
— Westerlund.io

14

та сама проблема ... вирішено донгом наступне

1.) закрити pm manager 2.) закрити Visual Studio 3.) Open Visual Studio 4.) Open pm manager

здається, фокус у тому, щоб закрити PM Manager перед закриттям VS


Так, перезавантаження PM і VS - це рішення, це відбувається, коли ми відкриваємо проект в найновішій візуальній студії, яка раніше була створена в попередній версії. Відкриваючи такий код, VS намагається виконати кілька автоматичних налаштувань. та В.С.
— Malik Khalil

9

Я просто мав цю проблему теж. Я закрив і відкрив VS2015, і це "виправило" проблему ...


Щойно це сталося у виданні VS 2019 Community.
— Гейб,

9

Ви повинні знати, яка ваша Entity-Frameworkверсія. Також після цього вам доведеться перевірити project.jsonта контролювати ці розділи:

У Залежностях

перевірити:

Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},

Цей розділ:

"version": "1.0.0-preview2-final",

пов'язано з версією вашого, Entity-Frameworkі ви повинні змінити це з тим.

Після цього другий розділ proj.jsonзнаходиться тут, у цьому Toolsрозділі JSONви маєте:

"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",

Також ця частина коду пов'язана з вашою Entity-Frameworkта останньою частиною коду в розділі " Залежності ".

Примітка: Після виконання цих проблем вам слід закрити CMDта перезапустити Visual Studio.


6

Що я мав робити ...

1) Інструменти -> Менеджер пакунків Nuget -> Налаштування диспетчера пакетів

2) Загальна вкладка

3) Очистити всі кеші NuGet

4) Перезапустіть Visual Studio



5

Просто спробуйте init Microsoft.EntityFrameworkCore.Tools. У ПМ виконати

C:\Users\<username>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\1.0.0-preview2-final\tools\init.ps1.

Це допомогло мені з тією ж проблемою. Версія інструментів може бути іншою. Це залежало від того, що ви використовуєте у своєму проекті.


1
Для мене я використовую відносний шлях. \ Пакети \ Microsoft.EntityFrameworkCore.Tools.1.1.0 \ tools \ init.ps1 Це тому, що Поточний каталог PM вже є каталогом рішення, але для мене пакет Інструменти є частиною Рішення. Особисто я вважаю, що це найкраще рішення, оскільки немає перезапуску, редагування та перевстановлення. Це займає мить, і це працює.
— Вільям Лідер

4

Я натрапив на те саме питання. У більшості моїх проектів те саме було в інструментах.

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}

Це добре працювало на всіх проектах, крім одного. Я змінив запис в інструментах на

"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  }
}

А потім побіг dotnet restore. Після завершення відновлення Add-Migrationпрацював нормально.


2

У мене була та сама проблема, і я виявив, що це проблема з версіями Visual Studio у файлі рішення.

Я націлювався:

VisualStudioVersion = 14.0.25123.0

Але мені потрібно було націлити:

VisualStudioVersion = 14.0.25420.1

Після внесення цієї зміни безпосередньо до файлу рішення, командлети EF Core почали працювати в консолі диспетчера пакетів.


Дякуємо, що намагаєтесь допомогти. Я використовую версію, 14.0.25421.03 Update 3яка навіть вища, ніж ви.
— нам

2

Це кроки, які я виконав, і це вирішило проблему

1) Оновив мою оболонку Power з версії 2 до 3

2) Закрито консоль PM

3) Перезапущена Visual Studio

4) Виконайте наведену нижче команду у відновленні мережі PM Console

5) Початкова міграція додаткової міграції

Це спрацювало !!!


1

У мене була ця проблема, і жодне з попередніх рішень мені не допомогло. Моя проблема була насправді через застарілу версію PowerShell на моїй машині з Windows 7 - як тільки я оновився до PowerShell 5, він почав працювати.


1

Перейдіть до консолі менеджера пакетів (у Visual Studio) і виконайте команду нижче

C:\Users\<YOUR_USER>\.nuget\packages\Microsoft.EntityFrameworkCore.Tools\<YOUR_INSTALLED_VERSION>\tools\init.ps1


0

Я думаю, що відповідь потребує оновлення у 2017 році, оскільки держави-члени внесли деякі (невід’ємні) зміни, які докладно описані тут.

https://github.com/aspnet/EntityFramework/issues/7053

Підводячи підсумок, тепер вам знадобиться посилання на EntityFrameWorkCore.Tools.DotNet у розділі Інструменти, як показано нижче

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"

Я також опублікував робочий файл project.json нижче на випадок, якщо у когось виникнуть проблеми.

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.Razor.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    },
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
    "Microsoft.Extensions.Configuration.Json": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview2-final",
      "type": "build"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Ймовірно, вам доведеться перезапустити Visual Studio також знову.
— Френсіс

0

Я спробував зробити все вищезазначене і не везло. Я завантажив останній пакет .net core 2.0 і знову запустив команди, і це спрацювало.


Чи є .net core 2.0 стабільним зараз, щоб проект можна було оновити з 1.1.1до 2.0?
— nam

1
.NET Core 2.0 доступний останньою версією станом на 14 серпня 2017 року. blogs.msdn.microsoft.com/dotnet/2017/08/14/…
— Тайрон Мудлі

0

У моєму випадку я додав залежність через Nuget:

Microsoft.EntityFrameworkCore.Tools

А потім запустіть через консоль Package Manager:

add-migration Initial -Context "ContextName" -StartupProject "EntryProject.Name" -Project "MigrationProject.Name"

0

Це те, що мені вдалося: натисніть кнопку Visual Studio

Інструменти -> NuGet Package Manager -> Package Manager Console

введіть тут опис зображення

Тоді ви можете запустити Add-Migration, наприклад:

Add-Migration InitialCreate
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.