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


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.