Как открыть package manager console visual studio 2019
packages.config и PackageReference
Прежде чем перейти к рассмотрению каждого инструмента для управления пакетами, сделаем небольшое отступление. Видимо так исторически сложилось, что существует два формата хранения информации об установленных пакетах.
Package Manager UI и Package Manager Console
nuget.exe
Установка пакетов для заданного проекта
1. В папке проекта (где лежит файл *.csproj) создайте файл packages.config и добавьте в него информацию о необходимых пакетах. Вот пример такого файла:
<packages >
<package id = "AForge" version = "2.2.5" targetFramework = "net46" />
<package id = "AForge.Imaging" version = "2.2.5" targetFramework = "net46" />
<package id = "AForge.Math" version = "2.2.5" targetFramework = "net46" />
</packages >
2. Далее в командной строке (обычной cmd.exe) запускаем nuget. При этом в аргументах командной строки обязательно надо указать путь к файлу packages.config и путь к папке, в которую будут установлены пакеты (обычно это папка packages, которая лежит в папке решения):
SolutionDir\ProjectDir> nuget install packages.config -OutputDirectory SolutionDir\packagesВосстановление пакетов для всего решения
Переходим в корневую папку решения и вызываем:
Когда нужно восстановить пакеты, nuget.exe ищет в папках проектов файлы packages.config и считывает из них информацию о том, какие именно пакеты надо установить.
dotnet.exe
Установка пакетов для заданного проекта
SolutionDir\ProjectDir> dotnet add package <PACKAGE_NAME> --package-directory <PACKAGE_DIRECTORY>Восстановление пакетов для всего решения
SolutionDir> dotnet restore --packages <PACKAGES_DIRECTORY>PowerShell PackageManagement
The commands listed here are specific to the Package Manager Console in Visual Studio, and differ from the Package Management module commands that are available in a general PowerShell environment.
И не видим ничего. А делать надо так:
Ага, есть такой пакет, называется Extended.Wpf.Toolkit. Теперь я его устанавливаю:
Естественно, никакие ссылки в проект не добавляются (т. е. в этом смысле PowerShell PackageManagement работает аналогично nuget.exe).
А теперь я хочу посмотреть список установленных пакетов:
Name Version Source ProviderName
---- ------- ------ ------------
Extended.Wpf.Toolkit 3.5.0 SolutionDir\Extended.Wpf.Toolkit. NuGet
Переход с Nuget на Paket
При безусловных преимуществах, которые дает использование Nuget, есть и некоторые мелкие неудобства. Нас с коллегами например напрягало, что при установке (или восстановлении) пакета средствами Visual Studio в проект всегда добавляются ссылки на сборки пакета с установленным свойством Copy Local = True, т. е. они будут копироваться в выходную папку проекта, а нас такое поведение не устраивало по некоторым причинам.
1. Вам придется создать в корне вашего решения папку .paket, а поскольку имя папки начинается с точки, вы сможете сделать это только из командной строки:
2. Есть еще одна инструкция по установке, которая говорит: скачав файл paket.bootstrapper.exe в папку .paket, переименуйте его в paket.exe и закоммитьте (игнорировать его при помощи файла .gitignore, не надо). Зачем все это надо, написано в описании файла paket.bootstrapper.exe.
3. Для удобства пользования утилитой packet.exe существует расширение для Visual Studio под названием Paket for Visual Studio, которое обеспечивает некие плюшки, в частности подсветку синтаксиса и InteliSense для файлов paket.dependencies и paket.references. Но это расширение не устанавливается для Visual Studio 2019.
Установив paket.exe, подготавливаем наше решение (имеется в виду Visual Studio solution). Создаем в папке решения файл paket.dependencies. В нем перечисляются все пакеты для всех проектов решения, обычно, с указанием версий. Для одного из моих решений файл выглядит так:
// paket.dependencies file for paket package manager utility
// restrict target framework
framework: >= net46
// don't copy referenced assemblies to project's output directory
copy_local: false
// NuGet packages
nuget Accord 3.8.0
nuget Accord.Imaging 3.8.0
nuget Accord.MachineLearning 3.8.0
nuget Accord.Math 3.8.0
nuget Accord.Statistics 3.8.0
nuget Accord.Video 3.8.0
nuget Accord.Vision 3.8.0
nuget AForge 2.2.5
nuget AForge.Imaging 2.2.5
nuget AForge.Math 2.2.5
nuget AForge.Video 2.2.5
nuget AForge.Video.DirectShow 2.2.5
nuget AvalonEdit 5.0.4
nuget Extended.Wpf.Toolkit 2.5
nuget Mantin.Controls.Wpf.Notification 3.2.0.0
nuget MessagingToolkit.QRCode 1.3.0
nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform 2.0.1
nuget Ookii.Dialogs.Wpf 1.0.0
nuget System.ValueTuple 4.5.0
nuget System.Windows.Interactivity.WPF 2.0.20525
После того как файл paket.dependencies создан, можно попросить paket закачать пакеты:
Команда paket.exe install генерирует в папке решения файл paket.lock, который описывает какой пакет от какого пакета зависит. У меня он выглядит так:
Microsoft.CodeDom.Providers.DotNetCompilerPlatformSystem.ValueTuple
Если теперь запустить paket.exe install, то нужные пакеты не только загрузятся в папку packages (если они уже не загружены), но и в файл проекта (.csproj) добавятся ссылки на сборки из этих пакетов. Я уже писал выше, что для меня было важно в ссылках на сборки контролировать параметр Copy Local и делать его равным False. В paket это достигается строчкой copy_local: false в файле paket.dependencies.
Вот собственно и весь процесс использования paket. Последнее, что нужно сказать: если вы в своем решении уже пользовались NuGet, и переходите на paket, то утилита paket может выполнить этот переход полностью автоматически (т. е. вам не придется делать все, что было описано выше, нужно будет только скачать paket.exe):
Создание проектов и решений без Visual Studio
Создание файлов проектов и решений вручную
<ItemGroup >
<!-- Input to the tasks (see below) -->
<OutputFiles Include = "$(OutputPath)*.dll" />
</ItemGroup >
<!-- Target -->
<Target Name = "PostBuild" AfterTargets = "Build" >
<!-- Task -->
<Exec Command = "echo POSTBUILD COPYING OUTPUT FILES" />
<!-- Task -->
<Copy SourceFiles = "@(OutputFiles)"
DestinationFolder = "$(DistributionFolder)" />
</Target >
</Project >
Во фрагменте файла проекта (.csproj) даны комментарии по терминологии (в MSBuild ключевую роль играют понятия: Target, Task, Property и Item). По принципам своей работы MSBuild очень похожа на утилиту make.
Небольшое отступление. Если речь не идет о создании нового файла проекта (.csproj), а лишь об изменении имеющегося, то даже необязательно редактировать файл проекта. Те изменения, которые вы планируете внести в файл проекта можно вынести в отдельные два файла Directory.Build.props и Directory.Build.targets, которые утилита MSBuild сама ищет в папке проекта и выше нее и импортирует в проект. Подробнее об этом читайте в статье Customize your build.
Утилита dotnet.exe
dotnet new sln -n MySolutiondotnet new classlib -n MyProject
dotnet sln MySolution.sln add MyProject/MyProject.csproj
dotnet build
Утилита CMake
Программная генерация файлов проектов и решений
Резюме
Сборка решения
MSBuild
SolutionDir> MSBuild.exe -property:Configuration=ReleaseЧтобы программа MSBuild успешно запустилась из командной строки, вам нужно либо добавить путь к папке, где лежит msbuild.exe в переменную окружения PATH (у меня это C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin ), либо запускать командную строку Visual Studio Command Prompt либо указывать полный путь к файлу MSBuild.exe.
Build Systems (автоматизация сборки решения)
- Очистка решения и ⁄ или дистрибутива
- Установка ⁄ восстановление ⁄ обновление пакетов
- Построение проектов
- Формирование дистрибутива (копирование всяких файлов в папку дистрибутива)
В итоге остановились на системе Nuke.
Установка Nuke на компьютер:
Установка Nuke в решение Visual Studio:
Далее у меня состоялся с утилитой следующий диалог:
How should the build project be named?┐ nuke_build_project
Where should the build project be located?
┐ nuke_build_project
Which NUKE version should be used?
┐ 0.20.1 (latest release)
Which solution should be the default?
┐ MySuperBigSolution.sln
Do you need help getting started with a basic build?
┐ Yes, get me started!
Restore, compile, pack using .
┐ Neither
Source files are located in .
┐ ./src
Move packages to .
┐ Neither
Where do test projects go?
┐ ./tests
Do you use GitVersion?
┐ Yes, just not setup yet
Creating directory 'SolutionDir\nuke_build_project'.
Creating directory 'SolutionDir\tests'.
Пример очень простого кода Build.cs:
AbsolutePath SourceDirectory => RootDirectory / "src" ;
Итак, у нас есть проект программы, которая выполняет сборку решения. Теперь чтобы запустить процесс сборки решения, надо выполнить в командной строке powershell скрипт build.ps1:
SolutionDir> .\build.ps1 -target compile -configuration releaseРасширения для Visual Studio
Command Task Runner
Вот пример файла commands.json с двумя задачами (BuildRelease и Clean), которые выполняются путем запуска скрипта build.ps1 (скрипт PowerShell, который появился при установке Nuke):
NUKE Support
Как пользоваться VS Code
Command Palette
Отладка в VS Code
В VS Code почему-то можно отлаживать только 64-разрядные программы, поэтому вам придется специально построить 64-разрядную версию своей программы. Для этого при компиляции вы должны передать утилите MSBuild параметр командной строки /p:Prefer32Bit=False . Если мы запускаем MSBuild из проекта nuke, то можно добавить такую tagret в исходный код проекта nuke:
Благодарности
Но во всех других проектах команда выполняется нормально.
Почему это происходит?
Кстати, я использую VS2010 Professional SP1
РЕДАКТИРОВАТЬ: Я переустановил с помощью commmand: Install-Package EntityFramework -IncludePrerelease и проблема исчезла.
ОТВЕТЫ
Ответ 1
Я переустановил с помощью commmand: Install-Package EntityFramework -IncludePrerelease и проблема исчезла.
Ответ 2
Просто для начала Visual Studio работал у меня. Нет необходимости устанавливать пакеты и т.д.
Ответ 3
Эта проблема возникает, потому что у нас не установлен Entity Framework. Пожалуйста, установите Entity Framework, используя приведенную ниже команду.
После установки выберите проект в раскрывающемся списке проектов по умолчанию консоли консоли менеджера пакетов.
Убедитесь, что хотя бы один класс в вашем проекте наследуется от контекста данных, в противном случае используйте следующий класс:
Если мы этого не сделаем, мы получим еще одну ошибку:
No context type was found in the assembly
После завершения этих вещей вы можете запустить
Ответ 4
Перезапуск Visual Studio с привилегией администратора решила проблему для меня.
Ответ 5
Запустите Visual Studio в качестве администратора.
Ответ 6
Сначала "Install-Package EntityFramework -IncludePrerelease", а затем перезагрузка Visual Studio в качестве администратора работала для меня вместе.
Ответ 7
Оказывается, мне пришлось установить через NuGet Microsoft.EntityFrameworkCore.Tools и Microsoft.EntityFrameworkCore.Design . Как только это было сделано, это работало как очарование.
Ответ 8
В Visual Studio 2012 у меня была такая же ошибка. Придется удалить NuGet (Tools > Extensions and Updates > Installed > All: NuGet Package Manager: кнопка удаления). Затем закрыта Visual Studio. Затем повторно открыли Visual Studio и переустановили NuGet (Инструменты > Расширения и Обновления > Онлайн > Галерея Visual Studio: Диспетчер пакетов NuGet: Кнопка загрузки). Затем в следующих окнах: нажмите кнопку "Установить", затем нажмите кнопку "Закрыть". Затем закройте и снова откройте Visual Studio.
Ответ 9
Что фиксировал этот симптом для меня (VS2013), это удаление, а затем переустановка пакета EF с помощью Nuget. Разница в файле csproj изменила это.
Я пока не понимаю, почему, но это сработало как минимум.
Ответ 10
Ответ 11
У меня была та же проблема, и я попробовал большую часть решения, предоставленного другими людьми, но он работал для меня с шагами ниже. У меня есть VS 2017.
затем создайте класс как
и в последний раз выполнить
Что не сработало для меня:
: только команда "Enable-Migrations", которая без -EnableAutomaticMigrations.
: восстановление или обновление диспетчера пакетов Nuget.
Моя первоначальная ошибка в начале была
/* Термин "разрешить миграцию" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и попробуйте снова. В строке: 1 символ: 1 + enable -igration +
+ CategoryInfo: ObjectNotFound: (enable -igration: String) [], CommandNotFoundException */
Ответ 12
У меня была та же проблема, и я обнаружил, что это связано с некоторыми символами в пути к проекту, например [или] Я исправляю путь проекта, и он отлично работает!
Ответ 13
Ответ 14
Поскольку у меня уже была папка с миграциями, я перезапустил Visual Studio и запустил Обновить-База данных -verbose в консоли диспетчера пакетов. Это сработало для меня
Ответ 15
Я пробовал все вышеперечисленные предложения, но ничего не работал у меня, а затем обновил Nuget Package Manager , и он сработал.
Ответ 16
Установите платформу Entity в текущий проект с помощью следующей команды: PM> Install-Package EntityFramework -IncludePrerelease
Добавьте класс "MyDBContext" в папку "Модель", как показано ниже:
открытый класс MyDBContext: DbContext >
Теперь включите миграции для текущего проекта с помощью следующей команды: PM> enable-migrations
Ответ 17
В VS 2013 попытайтесь установить UPDATE 1 (RC1), и проблема будет решена.
Ответ 18
У меня было несколько проектов в решении, но у меня был правильный набор по умолчанию, поэтому я подумал, что он должен работать.
В конце концов, мне пришлось добавить параметр -StartupProject MyProjectName в команду
Ответ 19
Ни один из этих решений не работал у меня. Моим решением было удалить packages/EntityFramework.6.1.3 и Restore NuGet Packages
Я заметил, что packages/EntityFramework.6.1.3/tools/EntityFramework.psd1 отсутствует, так что это была вероятная причина. Как его удалили в первую очередь, хотя я понятия не имею.
Ответ 20
Проверьте, существует ли раздел конфигурации "entityFramework" в файле .config
Ответ 21
запустить от имени администратора vs =>> открыть опнепроект
Ответ 22
Проверьте версию Entity Framework.
если это 6.3, понизьте его до 6.2, и он должен работать просто отлично
Ответ 23
Я использую VS2019, ничего из вышеперечисленного не работает! Это проблема самого 2019 года? Если кто-то сталкивался с этим и имеет решение, пожалуйста, поделитесь!
Под управлением подразумевается поиск, скачивание, установка, настройка, обновление и удаление файлов сторонних разработчиков у себя в приложении.
Технически NuGet Manager представляет собой расширение для Visual Studio, доступное программисту в процессе работы над своим проектом. Если вы используете «студию» версии 2012 и выше, то NuGet уже заранее предустановлен и готов к работе. В случае версии 2010 его нужно установить вручную. Его можно скачать либо с официального сайта, либо установить напрямую из Visual Studio через менеджер дополнений.
Давайте откроем менеджер. Для этого в Solution Explorer щелкаем правой кнопкой мыши по рабочему проекту и в контекстном меню выбираем пункт «Manage NuGet Packages…»:
NuGet Manager открывается в новой вкладке в текстовом редакторе. Интерфейс у него довольно простой.
Три главные вкладки:
- Browse. Найти и установить нужные нам пакеты из хранилища NuGet
- Installed. Список уже установленных в нашем проекте библиотек
- Updates. Библиотеки в нашем проекте, которые можно обновить до новой версии
Также в интерфейсе менеджера представлены:
- Строка поиска. Мы можем искать нужную нам библиотеку, начав вводить ее название
- Кнопка «Обновить состояние окна»
- Галочка «Включать в выдачу предрелизные версии библиотек», например, какие-то тестовые или экспериментальные
- Выпадающий список Package source. В каком месте менеджер будет искать нужные нам библиотеки
- Кнопка «Настройки менеджера»
- Главная панель с результатами выдачи (слева)
- Панель с описанием того компонента, который мы выбрали (справа)
Попробуем установить какую-нибудь библиотеку к нам в проект, например, Entity Framework. Для этого переходим во вкладку Browse и в строке поиска начинаем вводить название нужного пакета. Далее выбираем его из списка и нажимаем кнопку Install. При необходимости можно выбрать определенную версию, отличную от стабильной последней, а также ознакомиться с информацией о данном пакете (авторы, лицензия и т.д.).
В зависимости от устанавливаемого пакета NuGet Manager также определит все его зависимости, или, другими словами, все дополнительные библиотеки, которые требуются устанавливаемому пакету для полноценной работы. В случае с Entity Framework таких зависимостей нет.
Теперь давайте более детально посмотрим, что конкретно сделал менеджер при установке этого компонента в наш проект:
1. Он определил, что для данного пакета нет никаких сторонних зависимостей. Если бы они были, то менеджер автоматически их определил и подтянул.
2. NuGet Manager добавил ссылку на установленный компонент в наш проект (References):
3. NuGet разместил скачанные файлы в специальной папке Packages, которая находится в корневой папке нашего приложения. Это очень удобно, ссылки в проекте теперь идут на эту папку:
4. В конфигурационный файл packages.config была добавлена запись о новом пакете:
5. В конфигурационный файл приложения web.config также были внесены необходимые изменения, чтобы подготовить компонент Entity Framework к работе:
Вот такие операции происходят, когда NuGet Manager добавляет новую библиотеку к нам в проект.
Подобным образом происходит и обновление, и удаление компонентов из нашего проекта. В случае удаления менеджер также автоматически вносит изменения в файлы нашего проекта – убирает записи из файла packages.config, удаляет соответствующие файлы в папке packages, убирает ссылки на эти библиотеки.
Давайте рассмотрим еще несколько моментов.
С NuGet Manager можно работать не только через графический интерфейс, но и через командную строку (консоль). Чтобы ее открыть, идем Tools -> NuGet Package Manager -> Package Manager Console.
Работа в консоли ничем не отличается от работы в графическом интерфейсе, это дело вкуса.
Управление осуществляется посредством специальных команд. Чтобы вывести в консоль список всех доступных команд нужно написать инструкцию:
Команд достаточно много, и описание каждой можно найти в официальной документации на сайте. Вот пример использования наиболее популярных команд.
Добавляем пакет Entity Framework в текущий проект:
Обновляем ранее установленный пакет:
Переустанавливаем ВСЕ пакеты во всех проектах в данном решении:
Подведем краткий итог. NuGet – это просто незаменимый инструмент для разработчика на сегодняшний день. Он автоматизирует весь процесс работы с пакетами в проекте, а именно поиск, скачивание, установка, настройка, обновление и удаление файлов.
В видео версии этого урока более подробно и наглядно показана работа с этим инструментом.
Visual Studio 2019 для Mac версии 8.3 поставляется со многими новыми функциями, кратко изложенными в этом посте в блоге. Возможность управлять пакетами на уровне решения была одной из тех возможностей, которых большинству из вас не хватало в Visual Studio для Mac. Новый диспетчер пакетов NuGet уровня решения является одной из крутых новых функций Visual Studio 2019 для Mac версии 8.3.
Мы внесли улучшения, чтобы помочь вам легче находить пакеты. Это включает в себя улучшенный функционал при поиске новых пакетов, понимание того, какие пакеты уже установлены в вашем проекте, и поиск пакетов с доступными обновлениями. В этом посте мы сосредоточимся на функционале управления пакетами для решения. Однако большая часть функционала, включая установку, обновление и просмотр установленных пакетов, имеет аналогичный новый функционал и на уровне проекта.
Чтобы запустить диспетчер пакетов NuGet для Решения (Solution), вы можете перейти в контекстное меню Решения и выбрать «Manage NuGet Package…»:
Добавление новых пакетов
Когда вы ищете и пытаетесь добавить новый пакет, вы можете выбрать проекты, в которые вы хотите установить пакет.
В любой момент вы можете перейти на вкладку «Установлено» и просмотреть список всех пакетов, установленных в вашем решении, что позволит вам удалить их для обновления.
Обновление пакетов
На вкладке «Обновления» отображаются все пакеты в решении, для которых доступны обновления (или в проекте, если вы вызываете команду на уровне проекта).
Консолидирование пакетов
Часто крупные решения оказываются в ситуациях, когда разные проекты ссылаются на разные версии пакета. Чтобы объединить эти версии в единую версию пакета, которую вы, возможно, захотите использовать в решении, Вы можете перейти на вкладку консолидации диспетчера пакетов NuGet, вызванного на узле решения, выбрать версию пакета, которую хотите использовать во всех проектах решения, и выбрать консолидацию пакетов (consolidate packages):
Пробуйте уже сейчас!
Если вы столкнулись с какими-либо проблемами в выпуске v8.3, воспользуйтесь меню Справка > Сообщить о проблеме. Вы также можете сделать предложения по дальнейшим улучшениям с помощью меню «Предоставить предложение» (Provide a Suggestion).
Ну и следите за нами в Твиттере в @VisualStudioMac, чтобы быть в курсе последних новостей Visual Studio для Mac и сообщать нам о ваших впечатлениях. С нетерпением ждем вас!
Читайте также: