Bir NuGet paketi .nupkg dosyasını yerel olarak nasıl yüklerim?


Yanıtlar:


463

Menü AraçlarSeçeneklerPaket Yöneticisi

Resim açıklamasını buraya girin

Bir ad ve klasör konumu verin. Tamam'ı tıklayın. NuGet paket dosyalarınızı bu klasöre bırakın.

Projenize gidin, sağ tıklayın ve "NuGet Paketlerini Yönet" i seçin ve yeni paket kaynağınızı seçin.

Resim açıklamasını buraya girin

İşte belgeler .


22
Aslında adım 1'i birkaç kez yaptım. Ancak, Yüklü paketleri, Güncelleştirmeleri veya Son Kullanılan paketleri görüntülemek için açtığımda paketim 2. adımda görünmüyor.
Tom

2
Ekranımda, yalnızca "Yüklü paketler" altında "Tümü" var, "NuGet resmi paket kaynağı" değil, özel "newNuget" değil, bunlar eksik.
Tom

1
Vs2010 kullanıyorum. En son külçeyi şimdi ana sayfalarından indirip yüklemeye çalışıyorum. Download next next ... sonra hata ... M $ beklendiği gibi, bilinen sorunların bir bağlantı var, kontrol, imza uyumsuzluk diyor sonra mevcut nuget kaldırmak gerekir ve kolay düzeltme. tamam, bunu yap. Bilgisayarı yeniden başlattığımda ve tekrar yüklediğimde, aynı hata geri geliyor, imza uyuşmazlığı ... şimdi eski sürümde kaldım, yeni sürüm yüklemek istemiyor.
Tom

2
Sorun düzeltildi. Nuget'i pencerelerden kaldırdım -> kontrol panelinden. Bu şekilde çalışmadı. VS'yi başlatmam ve Tools-> Extension Manager'a gitmem gerekiyordu ... sonra oradan kaldırma nugetine vurdum. VS. yeniden başlatıldı Sonra tekrar nuget kurmaya gitti, işe yaradı. Şimdi, yerel nupkg dosyaları da gösteriliyor (düzenle: Yüklü sekmesinde değil, Çevrimiçi sekmesinde, yayınladığım resimdeki hatam). Yardım için teşekkürler :)
Tom

1
Henüz yorum yapmak için yeterli itibarım yok - ama VS2015 hakkında hala çevrimiçi olmak isteyen kabul edilen cevap yorumlarında Michael'a cevap vermek için. Aynı sorunu yaşadım, ancak seçeneklerde, tüm çevrimiçi kaynakları serbest bırakırsanız çevrimdışı olanlar için çalışır. nuget Seçenekleri pic
Mick m

302

Paket Yöneticisi Konsolu'nu kullanabilir Install-Packageve -Sourceparametrede paket dosyasını içeren dizinin yolunu belirterek cmdlet'i çağırabilirsiniz :

Install-Package SomePackage -Source C:\PathToThePackageDir\

2
komut satırı aracıyla böyle bir şey yapabilir miyim?
Poul K. Sørensen

5
Evet. Bu -Sourceseçenek nuget.exe'de de mevcuttur . Örneğin:nuget install SomePackage -Source C:\PathToThePackageDir
Enrico Campidoglio

16
-IncludePrerelease bayrağını da belirtmeniz gerekebilir. Aksi takdirde, paket sürümünde bir tire eki (ör. "-Beta1") varsa, Install-Package bulamaz.
Jeff Sharp

9
Bu, kabul edilenden çok daha doğrudan bir cevaptır. Bilgi için teşekkürler!
David Peters

2
VS 2017 için çalışmıyor, bkz. Tarafından cevap @Granger.
RenniePet

124

Kullanmak istediğim .nupkg dosyaları için:

Install-Package C:\Path\To\Some\File.nupkg

7
İşe yarayan tek şey. Dizinin yolu boşluk içeriyorsa, dizini çift tırnak içine alın.
Nikos

4
Katılıyorum. Ve sadece mutlak yolların işe yaradığını belirtmeye değer
Sebastian J.

5
VS 2017 için çalışmıyor, bkz. Tarafından cevap @Granger.
RenniePet

1
@RenniePet, VS2017'de benim için çalıştı (ama zaten .nupkgdiğer tüm paketlerin saklandığı aynı dizinin altına yerleştirmiştim )
Rafalon

1
Benim için çalışmıyor, VS2013 Sürüm 12.0.21..5 ve Nuget paket yöneticisi 2.12.0.817 kullanıyorum :(
Niraj Trivedi

56

Visual Studio 2017 ve yeni .csproj biçimi için

Artık yerel bir dosyayı işaret etmek için Install-Package'ı kullanamazsınız. (Bunun nedeni, PackageReferenceöğenin dosya yollarını desteklememesi olabilir; yalnızca paketin kimliğini belirtmenize izin verir.)

İlk olarak Visual Studio'ya paketinizin yerini söylemelisiniz ve daha sonra projeye ekleyebilirsiniz. Çoğu insanın yaptığı şey NuGet Paket Yöneticisine gitmek ve yerel klasörü kaynak olarak eklemek (menü AraçlarSeçeneklerNuGet Paket YöneticisiPaket Kaynakları ). Ancak bu, bağımlılığınızın konumunun kod tabanınızın geri kalanıyla (sürüm kontrolüne) bağlı olmadığı anlamına gelir.

Göreli bir yol kullanan yerel NuGet paketleri

Bu, yalnızca belirli bir çözüm için geçerli olan bir paket kaynağı ekler ve göreli yolları kullanabilirsiniz.

Sizinle nuget.configaynı dizinde bir dosya oluşturmanız gerekir.sln . Dosyayı istediğiniz paket kaynaklarıyla yapılandırın. Çözümü bir sonraki Visual Studio 2017'de açtığınızda, bu kaynak klasörlerden tüm .nupkg dosyaları kullanılabilir. (Paket Yöneticisi'nde listelenen kaynakları göreceksiniz ve bir proje için paketleri yönetirken paketleri "Gözat" sekmesinde bulacaksınız.)

İşte nuget.configbaşlamanıza bir örnek :

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

backstory

Bu işlev için kullanım durumum, makinemde tek bir kod deposunun birden fazla örneğinin olması. Kod tabanında, .nupkg dosyası olarak yayınlanan / dağıtılan paylaşılan bir kitaplık var. Bu yaklaşım, kod tabanımızdaki çeşitli bağımlı çözümlerin paketi aynı depo örneğinde kullanmasına izin verir. Ayrıca, yeni bir Visual Studio 2017 yüklemesi olan biri, kodu istediği yere teslim edebilir ve bağımlı çözümler başarıyla geri yüklenir ve oluşturulur.


VS 2017 kullanıyorum ve bu sorunla karşılaşmadım. Sadece -Sourcetartışmayı geçtim Update-Packageve işe yaradı. Belki özellikle Install-Packagekomutla ilgili bir şey ?
Greg Burghardt

48
  1. Dosyaları çözümünüzün yanındaki LocalPackages adlı bir klasöre ekleyin (bunun çağrılması gerekmez, ancak aşağıdaki adımda xml'yi buna göre ayarlayın)
  2. Aşağıdaki içeriğe sahip çözüm dosyanızın yanında NuGet.config adlı bir dosya oluşturun

    <?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. Çözüm Visual Studio'da açıksa kapatın ve yeniden açın.

Şimdi paketlerinizin tarayıcıda görünmesi veya Kurulum Paketi kullanılarak yüklenebilmesi gerekir


Fantastik cevap, tam olarak aradığım çözüm. Teşekkürler!
Jonathan

1
Bunun nedeni, Nuget deposundaki adla aynı ada sahip bir paketim olması olabilir, ancak Install-Package'ı çalıştırmadan önce Package Manager Konsolu'nu kullanmalı ve paket kaynağını LocalPackages olarak seçmem gerekiyordu.
Luke

42

Bir .nupkg dosyanız varsa ve yalnızca .dll dosyasına ihtiyacınız varsa, tek yapmanız gereken uzantıyı .zip olarak değiştirmek ve lib dizinini bulmaktır.


3
bir zip dosyası olarak ele alırsanız, dosya adında boşluk olan dosyalar% ile çıkarılır (boşlukların değiştirilmesi). Bunu önlemek için NuGet kullanarak yükleyin.
Rahatur

2
Aslında, uzantıyı yeniden adlandırmanız bile gerekmez. Dosyayı sağ tıklatıp Birlikte aç'ı seçin ve .zip dosyasını açabilen bir uygulama bulun ve .nupkg dosyası açılabilir ve gerekli dll dosyasını belirlenen klasöre ayıklayabilirsiniz.
jyao

1
İhtiyacım olan en iyi çözüm
Leo Nguyen

8

Sadece bir güncelleştirme vermek için Visual Studio 2015 kullanıcıları için küçük değişiklikler var.

Paketi manuel olarak kullanmak veya yüklemek için Araçlar -> Seçenekler -> NuGet Paket Yöneticisi -> Paket Kaynakları'na gidin.

Ekle düğmesini tıklayın, Kaynak'ı seçin ve paketlerinizin klasör konumunu güncelleyeceği için " Güncelle " yi tıklamayı unutmayın , isterseniz paket kaynağınızın istediğiniz Adını düzenleyin:

resim açıklamasını buraya girin

Eklediğiniz paketi seçmek için çözümünüzü sağ tıklayın ve " Nuget Paketlerini Yönetin " i seçin

Açılır liste sağdadır ve klasör kaynağınızda belirttiğiniz paketlere göz atmak için Gözat'ı seçin. Bu klasör kaynağında nuget paketi yoksa, bu boş olacaktır:

resim açıklamasını buraya girin


6

Linux'ta, NuGet CLI ile komutlar benzerdir. My.nupkg 'ı kurmak için şunu çalıştırın:

nuget add -Source some/directory my.nupkg

Sonra dotnet restoreo dizinden çalıştırın

dotnet restore --source some/directory Project.sln

veya bu dizini NuGet kaynağı olarak ekleyin

nuget sources Add -Name MySource -Source some/directory

ve sonra msbuildo dizini /p:RestoreAdditionalSources=MySourceveya ile kullanmayı söyleyin /p:RestoreSources=MySource. İkinci anahtar, örneğin çevrimdışı senaryolar için iyi olan diğer tüm kaynakları devre dışı bırakır.


1
Mac'te (Linux da varsayıyorum), bu hata nedeniyle (veya VS Mac ) nuget sourceskullanıyorsanız güvenemezsiniz . Yerel kaynağı el ile eklemek zorunda kaldım (bu GH sorununa bakın ). dotnet restore~/.nuget/NuGet/NuGet.Config
gabe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.