Как я могу установить файл .nupkg пакета NuGet локально?

Ответы:

465

Меню ИнструментыПараметрыДиспетчер пакетов

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

Дайте имя и местоположение папки. Нажмите ОК. Удалите файлы пакета NuGet в эту папку.

Перейдите в свой проект, щелкните правой кнопкой мыши и выберите «Управление пакетами NuGet» и выберите новый источник пакета.

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

Вот документация .

Shyju
источник
22
На самом деле, я сделал шаг 1 несколько раз. Но мой пакет не отображается на шаге 2, когда я открываю его для просмотра Установленных пакетов, Обновлений или Недавних пакетов.
Том
2
На моем экране только «Все» в разделе «Установленные пакеты», а не «Официальный источник пакетов NuGet», а не мой пользовательский «newNuget», они отсутствуют.
Том
1
Я использую vs2010. Попытка загрузить и установить последнюю версию Nuget со своей домашней страницы прямо сейчас. Скачать нажмите следующий далее ... затем ошибка ... M $, как и ожидалось, есть ссылка на известные проблемы, проверил, что, несоответствие подписи, то мне нужно удалить существующий nuget, и это легко исправить. хорошо, сделай это. Когда я перезагружаю компьютер и делаю установку снова, возвращается та же самая ошибка, несоответствие подписи ... так что теперь я застрял с исчезнувшей старой версией, новая версия не хочет устанавливать.
Том
2
Проблема исправлена. Я удалил nuget из окна -> панель управления. Это не сработало. Мне нужно было запустить VS и войти в Tools-> Extension Manager ..., а затем нажать «Удалить Nuget» оттуда. Перезапустил VS. Затем снова установил nuget, все заработало. Теперь также отображаются локальные файлы nupkg (редактировать: они находятся на вкладке Online, а не на вкладке Installed, моя ошибка на картинке, которую я публикую). Спасибо за помощь :)
Том
1
У меня пока недостаточно репутации, чтобы комментировать, но чтобы ответить Майклу в принятом ответе, комментарии о VS2015 все еще хотят выйти в Интернет. У меня была та же проблема, но в опциях, если вы уберете отметку со всех онлайн-источников, она работает для офлайн-источников. nuget Options pic
Мик
302

Вы также можете использовать консоль диспетчера пакетов и вызвать Install-Packageкомандлет, указав в параметре путь к каталогу, в котором находится файл пакета -Source:

Install-Package SomePackage -Source C:\PathToThePackageDir\
Энрико Кампидоглио
источник
2
Могу ли я сделать что-то подобное с помощью инструмента командной строки?
Пол К. Соренсен
5
Да. -SourceОпция доступна в nuget.exe , а также. Например:nuget install SomePackage -Source C:\PathToThePackageDir
Энрико Кампидоглио
16
Возможно, вам также потребуется указать флаг -IncludePrerelease. В противном случае, если версия пакета имеет дефис-суффикс (например, «-beta1»), Install-Package не найдет его.
Джефф Шарп
9
Это гораздо более прямой ответ, чем принятый. Спасибо за информацию!
Дэвид Питерс
2
Не работает для VS 2017, см. Например. ответ @Granger.
RenniePet
124

Для файлов .nupkg мне нравится использовать:

Install-Package C:\Path\To\Some\File.nupkg
Феликс Алкала
источник
7
Единственное, что сработало. Если путь к каталогу содержит пробелы, включите его в двойные кавычки.
Никос
4
Согласен. И стоит упомянуть, что работают только абсолютные пути
Себастьян Дж.
5
Не работает для VS 2017, см. Например. ответ @Granger.
RenniePet
1
@RenniePet, который работал для меня в VS2017 (но я уже поместил свой .nupkgв тот же каталог, в котором хранились все остальные пакеты)
Rafalon
1
Это не работает для меня, я использую VS2013 версии 12.0.21..5 и менеджер пакетов Nuget 2.12.0.817 :(
Niraj Trivedi
56

Для Visual Studio 2017 и его нового формата .csproj

Вы больше не можете просто использовать Install-Package, чтобы указать на локальный файл. (Это, вероятно, потому чтоPackageReference элемент не поддерживает пути к файлам; он позволяет только указать идентификатор пакета.)

Сначала вы должны сообщить Visual Studio о местонахождении вашего пакета, а затем вы можете добавить его в проект. Большинство людей делают это в диспетчере пакетов NuGet и добавляют локальную папку в качестве источника (меню СервисПараметрыДиспетчер пакетов NuGetИсточники пакетов ). Но это означает, что местоположение вашей зависимости не передается (для контроля версий) с остальной частью вашей кодовой базы.

Локальные пакеты NuGet, использующие относительный путь

Это добавит источник пакета, который применяется только к конкретному решению, и вы можете использовать относительные пути.

Вам нужно создать nuget.configфайл в том же каталоге, что и ваш .slnфайл. Сконфигурируйте файл с нужными источниками пакетов. При следующем открытии решения в Visual Studio 2017 будут доступны любые файлы .nupkg из этих исходных папок. (Вы увидите источники, перечисленные в Диспетчере пакетов, и найдете пакеты на вкладке «Обзор» при управлении пакетами для проекта.)

Вот пример nuget.configдля начала:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="MyLocalSharedSource" value="..\..\..\some\folder" />
    </packageSources>
</configuration>

Предыстория

Мой вариант использования этой функциональности заключается в том, что у меня есть несколько экземпляров одного репозитория кода на моей машине. В базе кода есть общая библиотека, которая опубликована / развернута в виде файла .nupkg. Этот подход позволяет различным зависимым решениям в нашей кодовой базе использовать пакет в одном и том же экземпляре репозитория. Кроме того, кто-то с новой установкой Visual Studio 2017 может просто извлекать код в любом месте, и зависимые решения будут успешно восстановлены и собраны.

управляющий фермой
источник
Я использую VS 2017 и не столкнулся с этой проблемой. Я только что передал -Sourceаргумент, Update-Packageи он работал нормально. Может быть, что-то конкретно делать с Install-Packageкомандой?
Грег Бургхардт
48
  1. Добавьте файлы в папку с именем LocalPackages рядом с вашим решением (это не нужно называть так, но соответствующим образом настройте xml на следующем шаге)
  2. Создайте файл с именем NuGet.config рядом с файлом решения со следующим содержимым

    <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <add key="LocalPackages" value="./LocalPackages" />
        </packageSources>
        <activePackageSource>
          <!-- this tells that all of them are active -->
          <add key="All" value="(Aggregate source)" />
        </activePackageSource>
     </configuration>
  3. Если решение открыто в Visual Studio, закройте его, а затем снова откройте.

Теперь ваши пакеты должны появиться в браузере или быть установлены с помощью Install-Package

Сэмюэл Джек
источник
Фантастический ответ, именно то решение, которое я искал. Спасибо!
Джонатан
1
Это может быть просто потому, что у меня есть пакет с тем же именем, что и в репозитории Nuget, но мне нужно было использовать Консоль диспетчера пакетов и выбрать источник пакета как LocalPackages перед запуском Install-Package.
Люк
42

Если у вас есть файл .nupkg и вам просто нужен файл .dll, все, что вам нужно сделать, это изменить расширение на .zip и найти каталог lib.

Марлон Кристиан
источник
3
если вы рассматриваете его как zip-файл, то файлы с пробелом в имени файла будут извлечены с помощью% (заменяя пробелы). Чтобы избежать этой установки, используйте NuGet.
Рахатур
2
На самом деле, вам даже не нужно переименовывать расширение. Просто щелкните файл правой кнопкой мыши, затем выберите «Открыть с помощью» и найдите приложение, которое может открыть файл .zip, и файл .nupkg можно открыть, а затем вы можете извлечь нужный файл DLL в указанную папку.
Jyao
1
Лучшее решение, которое мне нужно
Лео Нгуен,
8

Просто для обновления есть небольшие изменения для пользователей Visual Studio 2015.

Чтобы использовать или установить пакет вручную, выберите Сервис -> Параметры -> Диспетчер пакетов NuGet -> Источники пакетов.

Нажмите кнопку «Добавить», выберите «Источник», и не забудьте нажать « Обновить », так как это обновит расположение папки для ваших пакетов, отредактируйте желаемое имя источника вашего пакета, если вы хотите:

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

Чтобы выбрать добавленный пакет, щелкните правой кнопкой мыши свое решение и выберите « Управление пакетами Nuget». ».

Выпадающий список справа и выберите Обзор, чтобы просмотреть ваши пакеты, которые вы указали в источнике вашей папки. Если в этом источнике папки нет пакета nuget, он будет пустым:

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

Вилли Дэвид младший
источник
6

В Linux с NuGet CLI команды похожи. Чтобы установить my.nupkg, запустите

nuget add -Source some/directory my.nupkg

Затем запустите dotnet restoreиз этого каталога

dotnet restore --source some/directory Project.sln

или добавьте этот каталог в качестве источника NuGet

nuget sources Add -Name MySource -Source some/directory

а затем скажите msbuildиспользовать этот каталог с помощью /p:RestoreAdditionalSources=MySourceили /p:RestoreSources=MySource. Второй переключатель отключит все другие источники, что хорошо, например, для автономных сценариев.

user7610
источник
1
На Mac (я также предполагаю, что Linux), вы не можете положиться, nuget sourcesесли вы используете dotnet restore(или VS Mac ) из-за этой ошибки. Мне пришлось добавить локальный источник ~/.nuget/NuGet/NuGet.Configвручную (см. Эту проблему GH ).
gabe