Как включить миграцию в Visual Studio для Mac

У меня есть Visual Studio для Mac, и я пытаюсь изучить Xamarin с помощью Azure, используя следующий учебник: https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/глава3/сервер/

В какой-то момент мне нужно включить миграцию EF. В учебнике говорится: перейдите в «Вид» -> «Другие Windows» -> «Консоль диспетчера пакетов».

К сожалению, в Visual Studio для Mac нет консоли диспетчера пакетов... так как же обрабатывать такие вещи, как enable-migrations, add-migration или update-database на Mac?


person franswa    schedule 28.07.2017    source источник
comment
Visual Studio Package Manager Host в настоящее время не поддерживается macOS с помощью бета-версии PowerShell, поэтому попытка установить/инициировать EntityFramework.psm1 завершится ошибкой, так как запуск powershell приведет к ошибке ConsoleHost, и, таким образом, попытка запуска Import-Module в модуле PS EntityFramework завершится ошибкой. Команды миграции представляют собой довольно тонкую оболочку над API-интерфейсом Entity Framework, и вы можете довольно легко преобразовать их в приложение командной строки C #, но гораздо проще развернуть виртуальную машину Windows на Mac ... отстой, но это сегодня доступны два варианта: stackoverflow.com/a/20382226/4984832   -  person SushiHangover    schedule 29.07.2017
comment
Это больше, чем просто поддержка хоста диспетчера пакетов. Существует отдельная надстройка расширений NuGet, которая добавляет консоль PowerShell. Проблема в том, что, по крайней мере, в EF 6 команды PowerShell специфичны для Visual Studio. Когда я интегрировал поддержку EF 6 в SharpDevelop, все команды PowerShell необходимо было переписать для работы с хостовой IDE. EF 7 предоставляет кроссплатформенные команды, которые работают в командной строке с помощью dotnet cli. Однако интеграция с PowerShell — это еще одна проблема.   -  person Matt Ward    schedule 29.07.2017
comment
Здравствуйте, в настоящее время это поддерживается на Mac, пожалуйста, измените ответ. С уважением ;)   -  person G Clovs    schedule 18.02.2021


Ответы (4)


В настоящее время это не поддерживается в Visual Studio для Mac.

Существует надстройка расширений NuGet, которая добавляет консоль PowerShell в Visual Studio для Mac, однако команды Entity Framework PowerShell вряд ли будут работать, поскольку они обычно специфичны для Visual Studio. Кроме того, поддержка PowerShell ограничена, поскольку она использует Pash, клон PowerShell с открытым исходным кодом, который реализован не полностью.

Если вы используете Entity Framework 7 (или то, что они называют Entity Framework Core), вы должны иметь возможность использовать команды с Командная строка .NET Core.

dotnet ef migrations ...

Если вы используете Entity Framework 6, вам нужно будет найти другой способ вызова миграции вместо использования PowerShell. В Entity Framework 6 есть команды PowerShell, специфичные для Visual Studio. Они были перенесены в SharpDevelop, но потребовали перезаписи их для работы с этой IDE.

person Matt Ward    schedule 29.07.2017
comment
meta.stackoverflow.com/questions/359302/ - person Hans Passant; 14.11.2017

Чтобы запустить EF на Mac, просто выполните следующие действия.

Откройте командную строку, перейдите в папку проекта и запустите

восстановление дотнета

Если все в порядке, вы сможете запустить

дотнет эф

После этого вы можете запускать такие команды, как:

dotnet ef миграции добавить начальный

обновление базы данных dotnet ef

person J T    schedule 19.09.2019
comment
К вашему сведению... Если dotnet EF не работает, вам может потребоваться установить инструменты dotnet, так как они были удалены в .net core 3.0. - person JordanGW; 10.01.2020
comment
Мне пришлось запустить установку следующим образом: dotnet tool install -g dotnet-ef. Подробнее об этом можно узнать по адресу: docs .microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli - person Taylor Maxwell; 04.04.2020

В настоящее время это поддерживается на Mac.

Сначала вам нужно установить dotnet-ef

dotnet tool install --global dotnet-ef

Чтобы установить конкретную версию инструмента, используйте следующую команду:

dotnet tool install --global dotnet-ef --version 3.1.4

Добавьте каталог инструментов dotnet-ef в переменную среды PATH.

export PATH="$PATH:/Users/'your user folder'/.dotnet/tools"

Откройте командную строку, перейдите в папку проекта и запустите

dotnet restore

Если все в порядке, вы сможете запустить

dotnet ef

После этого вы можете запускать такие команды, как:

dotnet ef migrations add initial

dotnet ef database update

PS: Ваше решение не должно выполняться, когда пытается запуститься командная строка dotnet ef!!!

Для людей, которые не убеждены, вот демонстрация успеха!!! Для тех, кто не уверен, вот демонстрация успеха!!!

person G Clovs    schedule 03.02.2021
comment
дотнет эф не работает - person Marin; 23.02.2021
comment
Я должен быть на Mac, и это работает очень хорошо. Вы должны использовать его в расине вашего решения - person G Clovs; 23.02.2021
comment
я пробовал на уровне src - person Marin; 24.02.2021
comment
Ха-ха, ты троллишь меня, братан, командная строка существует. Вы должны найти способ заставить его работать. Я использую его каждый день - person G Clovs; 24.02.2021
comment
Вы должны запустить его, когда ваш проект не запущен. - person G Clovs; 25.02.2021

Если вы используете .NET Core (в частности, EF Core), вы можете установить консоль NuGet PowerShell Core в Visual Studio для Mac».

Просто следуйте инструкциям, описанным в:

https://lastexitcode.com/blog/2019/05/05/NuGetPowerShellCoreConsoleVisualStudioForMac8-0/

person Chipo Hamayobe    schedule 08.02.2020