Jak zainstalować plik .nupkg pakietu NuGet lokalnie?

Odpowiedzi:

463

Menu NarzędziaOpcjeMenedżer pakietów

Wpisz opis zdjęcia tutaj

Podaj nazwę i lokalizację folderu. Kliknij OK. Upuść pliki pakietu NuGet w tym folderze.

Przejdź do projektu, kliknij prawym przyciskiem myszy i wybierz „Zarządzaj pakietami NuGet” i wybierz nowe źródło pakietu.

Wpisz opis zdjęcia tutaj

Oto dokumentacja .

Shyju
źródło
22
Właściwie zrobiłem krok 1 kilka razy. Ale mój pakiet nie pojawia się w kroku 2, gdy otwieram się, aby wyświetlić Zainstalowane pakiety, Aktualizacje lub Najnowsze pakiety.
Tom
2
Na ekranie mam tylko „Wszystkie” w „Zainstalowanych pakietach”, a nie „oficjalne źródło pakietów NuGet”, a nie mój niestandardowy „newNuget”, brakuje ich.
Tom
1
Używam vs2010. Próbuję teraz pobrać i zainstalować najnowszy nuget ze strony głównej. Pobierz kliknij przycisk dalej następny ... następnie błąd ... M $ zgodnie z oczekiwaniami, istnieje link znanych problemów, zaznaczono to, mówi niedopasowanie podpisu, a następnie muszę odinstalować istniejący nuget i jest to łatwa naprawa. dobrze, zrób to. Kiedy ponownie uruchamiam komputer i instaluję ponownie, pojawia się ten sam błąd, niedopasowanie sygnatur ... więc teraz utknąłem z poprzednią wersją, nowa wersja nie chce się instalować.
Tom
2
Problem rozwiązany. Odinstalowałem nuget z Windows -> Panel sterowania. To nie działało w ten sposób. Musiałem uruchomić VS i przejść do Narzędzia-> Menedżer rozszerzeń ... a następnie stamtąd odinstalować nuget. Zrestartowano VS. Potem poszedłem ponownie zainstalować nuget, zadziałało. Teraz pojawiają się także lokalne pliki nupkg (edycja: znajdują się na karcie Online, a nie na karcie Zainstalowane, mój błąd na obrazie, który publikuję). Dzięki za pomoc :)
Tom
1
Nie mam jeszcze wystarczającej reputacji, aby komentować - ale aby odpowiedzieć Michaelowi w przyjętej odpowiedzi, komentarze na temat VS2015 nadal chcą przejść do trybu online. Miałem ten sam problem, ale w opcjach, jeśli odznaczysz wszystkie źródła online, będzie działać dla źródeł offline. nuget Opcje pic
Mick m
302

Możesz także użyć konsoli Menedżera pakietów i wywołać polecenie Install-Packagecmdlet, określając ścieżkę do katalogu zawierającego plik pakietu w -Sourceparametrze:

Install-Package SomePackage -Source C:\PathToThePackageDir\
Enrico Campidoglio
źródło
2
czy mogę zrobić coś takiego za pomocą narzędzia wiersza poleceń?
Poul K. Sørensen
5
Tak. -SourceOpcja jest dostępna w nuget.exe również. Na przykład:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio
16
Może być konieczne określenie flagi -IncludePrerelease. W przeciwnym razie, jeśli wersja pakietu ma sufiks myślnika (np. „-Beta1”), pakiet instalacyjny go nie znajdzie.
Jeff Sharp
9
To jest odpowiedź o wiele bardziej bezpośrednia niż zaakceptowana. Dzięki za informację!
David Peters
2
Nie działa dla VS 2017, patrz np. odpowiedź @Granger.
RenniePet
124

Do plików .nupkg lubię używać:

Install-Package C:\Path\To\Some\File.nupkg
Felix Alcala
źródło
7
Jedyne, co zadziałało. Jeśli ścieżka do katalogu zawiera spacje, umieść ją w cudzysłowie.
Nikos,
4
Zgodzić się. I warto wspomnieć, że działają tylko ścieżki absolutne
Sebastian J.,
5
Nie działa dla VS 2017, patrz np. odpowiedź @Granger.
RenniePet
1
@RenniePet, który pracował dla mnie w VS2017 (ale już umieściłem mój .nupkgw tym samym katalogu co wszystkie inne pakiety były przechowywane)
Rafalon
1
To nie działa dla mnie, używam wersji VS2013 12.0.21..5 i menedżera pakietów Nuget 2.12.0.817 :(
Niraj Trivedi
56

Dla programu Visual Studio 2017 i jego nowego formatu .csproj

Nie można już używać pakietu instalacyjnego do wskazywania pliku lokalnego. (Jest to prawdopodobne, ponieważ PackageReferenceelement nie obsługuje ścieżek plików; pozwala jedynie określić identyfikator pakietu.)

Najpierw musisz powiedzieć programowi Visual Studio o lokalizacji pakietu, a następnie możesz dodać go do projektu. Większość ludzi korzysta z Menedżera pakietów NuGet i dodaje folder lokalny jako źródło (menu NarzędziaOpcjeMenedżer pakietów NuGetŹródła pakietów ). Ale to oznacza, że ​​lokalizacja twojej zależności nie jest zobowiązana (do kontroli wersji) do reszty bazy kodu.

Lokalne pakiety NuGet przy użyciu ścieżki względnej

Spowoduje to dodanie źródła pakietu, które dotyczy tylko określonego rozwiązania, i można używać ścieżek względnych.

Musisz utworzyć nuget.configplik w tym samym katalogu, co .slnplik. Skonfiguruj plik z żądanymi źródłami pakietów. Po następnym otwarciu rozwiązania w programie Visual Studio 2017 wszystkie pliki .nupkg z tych folderów źródłowych będą dostępne. (Zobaczysz źródła (źródła) wymienione w Menedżerze pakietów, a pakiety znajdziesz na karcie „Przeglądaj” podczas zarządzania pakietami dla projektu.)

Oto przykład nuget.configna początek:

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

Historia

Moim przypadkiem użycia tej funkcji jest to, że mam wiele wystąpień jednego repozytorium kodu na moim komputerze. W bazie kodu znajduje się biblioteka współdzielona, ​​która jest publikowana / wdrażana jako plik .nupkg. Takie podejście umożliwia różnym rozwiązaniom zależnym w całej naszej bazie kodów korzystanie z pakietu w tej samej instancji repozytorium. Ponadto osoba ze świeżą instalacją programu Visual Studio 2017 może po prostu pobrać kod w dowolnym miejscu, a zależne rozwiązania zostaną pomyślnie przywrócone i zbudowane.

Granger
źródło
Używam VS 2017 i nie napotkałem tego problemu. Właśnie przekazałem -Sourceargument Update-Packagei działało dobrze. Może ma to coś wspólnego z Install-Packagepoleceniem?
Greg Burghardt,
48
  1. Dodaj pliki do folderu o nazwie LocalPackages obok rozwiązania (nie trzeba tego tak nazywać, ale odpowiednio dostosuj xml w następnym kroku)
  2. Utwórz plik o nazwie NuGet.config obok pliku rozwiązania z następującą zawartością

    <?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. Jeśli rozwiązanie jest otwarte w Visual Studio, zamknij je, a następnie otwórz ponownie.

Teraz twoje pakiety powinny pojawić się w przeglądarce lub być instalowalne za pomocą Install-Package

Samuel Jack
źródło
Fantastyczna odpowiedź, dokładnie to rozwiązanie, którego szukałem. Dzięki!
Jonathan
1
Może to być spowodowane tym, że mam pakiet o tej samej nazwie co repozytorium Nuget, ale musiałem użyć konsoli Menedżera pakietów i wybrać źródło pakietu jako LocalPackages przed uruchomieniem pakietu instalacyjnego.
Łukasz
42

Jeśli masz plik .nupkg i potrzebujesz tylko pliku .dll, wystarczy zmienić rozszerzenie na .zip i znaleźć katalog lib.

Marlon Cristian
źródło
3
jeśli traktujesz go jako plik zip, pliki zawierające spację w nazwie pliku zostaną wyodrębnione z% (zamieniając spacje). Aby uniknąć tej instalacji przy użyciu NuGet.
Rahatur
2
W rzeczywistości nie trzeba nawet zmieniać nazwy rozszerzenia. Po prostu kliknij plik prawym przyciskiem myszy, a następnie wybierz Otwórz za pomocą i znajdź aplikację, która może otworzyć plik .zip, a plik .nupkg można otworzyć, a następnie możesz wyodrębnić potrzebny plik dll do wyznaczonego folderu.
jyao,
1
Najlepsze rozwiązanie, którego potrzebuję
Leo Nguyen,
8

Aby dać aktualizację, dla użytkowników programu Visual Studio 2015 wprowadzono niewielkie zmiany.

Aby użyć lub zainstalować pakiet ręcznie, przejdź do Narzędzia -> Opcje -> Menedżer pakietów NuGet -> Źródła pakietów

Kliknij przycisk Dodaj, wybierz Źródło i nie zapomnij kliknąć „ Aktualizuj ”, ponieważ spowoduje to aktualizację lokalizacji folderów dla pakietów, edytuj żądaną Nazwę źródła pakietu, jeśli chcesz:

wprowadź opis zdjęcia tutaj

Aby wybrać dodany pakiet, kliknij prawym przyciskiem myszy rozwiązanie i wybierz „ Zarządzaj pakietami Nuget

Lista rozwijana znajduje się po prawej stronie i wybierz Przeglądaj, aby przeglądać pakiety określone w źródle folderów. Jeśli w tym źródle folderów nie ma pakietu nuget, będzie on pusty:

wprowadź opis zdjęcia tutaj

Willy David Jr
źródło
6

W systemie Linux z interfejsem NuGet CLI polecenia są podobne. Aby zainstalować mój.nupkg, uruchom

nuget add -Source some/directory my.nupkg

Następnie uruchom dotnet restorez tego katalogu

dotnet restore --source some/directory Project.sln

lub dodaj ten katalog jako źródło NuGet

nuget sources Add -Name MySource -Source some/directory

a następnie powiedz, msbuildaby użyć tego katalogu z /p:RestoreAdditionalSources=MySourcelub /p:RestoreSources=MySource. Drugi przełącznik wyłączy wszystkie inne źródła, co jest dobre na przykład w scenariuszach offline.

użytkownik7610
źródło
1
Na Macu (zakładam również, że Linux), nie możesz polegać, nuget sourcesjeśli używasz dotnet restore(lub VS Mac ) z powodu tego błędu. Musiałem ~/.nuget/NuGet/NuGet.Configręcznie dodać lokalne źródło (zobacz ten problem GH ).
gabe