NuGet Paketi Geri Yükleme ile paketleri geri yükleme

NuGet Paketi Geri Yükleme, projenin proje dosyasında veya packages.config dosyasında listelenen tüm bağımlılıklarını geri yükler. Paketleri , , dotnet restoremsbuild -t:restore, veya Visual Studio aracılığıyla el ile nuget restoregeri yükleyebilirsiniz. dotnet build ve dotnet run komutları paketleri otomatik olarak geri yükler ve Visual Studio'yu bir proje oluştururken paketleri otomatik olarak geri yükecek şekilde yapılandırabilirsiniz.

Paket Geri Yükleme, daha temiz bir geliştirme ortamını yükseltmek ve depo boyutunu küçültmek için projenin tüm bağımlılıklarını kaynak denetiminde depolamak zorunda kalmadan kullanılabilir hale getirir. Kaynak denetim deponuzu paket ikili dosyalarını dışlamak üzere yapılandırmak için bkz . Paketler ve kaynak denetimi.

Paket Geri Yükleme davranışı

Paket Geri Yükleme, .csproj gibi bir proje dosyasındaki veya <package>packages.config dosyasındaki s ile eşleşen <PackageReference>durumlarla tüm paket bağımlılıklarını yüklemeye çalışır. Paket Geri Yükleme, önce bir projenin doğrudan bağımlılıklarını gerektiği gibi yükler, ardından bağımlılık grafiğinin tamamında bu paketlerin bağımlılıklarını yükler.

Gerekli bir paket henüz yüklü değilse NuGet önce yerel genel paketlerden veya HTTP önbellek klasörlerinden almayı dener. Paket yerel klasörlerde değilse NuGet, Visual Studio'da Yapılandırılan tüm kaynaklardan Araç>Seçenekleri>NuGet Paket Yöneticisi> Package Kaynakları'ndan indirmeye çalışır.

Geri yükleme sırasında NuGet, paket kaynaklarının sırasını yoksayar ve isteklere yanıt veren ilk kaynaktan gelen paketi kullanır. Geri yükleme başarısız olursa, NuGet tüm kaynakları denetleyene kadar hatayı göstermez. NuGet daha sonra yalnızca listedeki son kaynak için bir hata bildirir. Hata, diğer hataları ayrı ayrı listelemese bile paketin hiçbir kaynakta mevcut olmadığını gösterir.

NuGet davranışı hakkında daha fazla bilgi için bkz . Yaygın NuGet yapılandırmaları.

Paketleri geri yükleme

Proje dosyanızdaki veya packages.config dosyanızdaki paket başvuruları doğruysa, paketleri geri yüklemek için tercih ettiğiniz aracı kullanın:

Başarılı bir geri yüklemeden sonra:

  • kullanan <PackageReference>projeler için paket yerel genel paketler klasöründe bulunur ve proje obj/project.assets.json dosyası yeniden oluşturulur.
  • packages.config kullanan projeler için paket projenin packages klasöründe görünür.
  • Proje artık başarıyla derlenmelidir.

Proje dosyanızdaki veya packages.config dosyanızdaki paket başvuruları yanlışsa ve istediğiniz durumla eşleşmiyorsa, Paket Geri Yükleme'yi kullanmak yerine doğru paketleri yükleyin veya güncelleştirin.

Paket Geri Yükleme'yi çalıştırdıktan sonra Çözüm Gezgini hata simgeleri gibi eksik paketler veya paketle ilgili hatalarınız varsa Paket Geri Yükleme hatalarını giderme veya paketleri yeniden yükleme veya güncelleştirme başlığındaki yönergeleri izleyin. Visual Studio'da, Paket Yöneticisi Konsolu paketleri yeniden yüklemek için çeşitli seçenekler sağlar. Daha fazla bilgi için bkz . Paket Güncelleştirme'yi kullanma.

Visual Studio'da paketleri geri yükleme

Windows üzerinde Visual Studio'da paketleri otomatik olarak veya el ile geri yükleyebilirsiniz. İlk olarak, Araç>Seçenekleri>NuGet Paket Yöneticisi aracılığıyla Paket Geri Yükleme'yi yapılandırın.

Visual Studio Paket Geri Yükleme seçeneklerini yapılandırma

Araçlar>Seçenekleri>NuGet Paket Yöneticisi> Genel'de aşağıdaki Paket Geri Yükleme seçeneklerini yapılandırın.

Screenshot that shows the NuGet Package Manager options.

NuGet'in eksik paketleri indirmesine izin ver

Paket geri yüklemesini etkinleştirmek için NuGet'in eksik paketleri indirmesine izin ver'i ve NuGet Paketlerini Geri Yükle komutunu seçin. Bu seçim, windows üzerinde %AppData%\Roaming\NuGet veya Mac veya Linux üzerinde ~/.nuget/NuGet/ konumundaki genel NuGet.Config dosyasının packageRestore bölümünde ayarını True ayarlarpackageRestore/enabled.

<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
    </packageRestore>
</configuration>

Not

Ayarı genel olarak geçersiz kılmak packageRestore/enabled için, Visual Studio'yu açmadan veya derleme başlatmadan önce EnableNuGetPackageRestore ortam değişkenini True veya False olarak ayarlayabilirsiniz.

Bir bilgisayardaki tüm kullanıcılar için Paket Geri Yükleme'yi etkinleştirmek veya devre dışı bırakmak için, yapılandırma ayarlarını Windows'taki genel NuGet.Config dosyasına %ProgramData%\NuGet\Config konumunda, bazen belirli< bir IDE>\Version>\<<SKU> Visual Studio klasörünün altına veya Mac/Linux'ta ~/.local/share konumunda ekleyebilirsiniz. Tek tek kullanıcılar, proje düzeyinde gerektiğinde geri yüklemeyi seçmeli olarak etkinleştirebilir. NuGet'in birden çok yapılandırma dosyasının önceliklerini nasıl belirlemesi hakkında daha fazla bilgi için bkz . Yaygın NuGet yapılandırmaları.

Önemli

NuGet.Config'deki ayarları doğrudan düzenlersenizpackageRestore, Seçenekler'in geçerli değerleri göstermesi için Visual Studio'yu yeniden başlatın.

Derleme sırasında eksik paketleri otomatik olarak denetleme

Visual Studio'dan bir derleme çalıştırdığınızda eksik paketleri otomatik olarak geri yüklemek için Visual Studio'da derleme sırasında eksik paketleri otomatik olarak denetle'yi seçin. Bu ayar, MSBuild komut satırından çalıştırılacak derlemeleri etkilemez. Bu seçim ayarı packageRestoreTrue NuGet.Config dosyasının bölümünde olarak ayarlarpackageRestore/automatic.

<configuration>
    <packageRestore>
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

SDK stili olmayan projelerde NuGet'in eksik paketleri indirmesine izin ver'i seçmeniz ve otomatik geri yüklemeyi etkinleştirmek için Visual Studio'daderleme sırasında eksik paketleri otomatik olarak denetlemeniz gerekir.

Varsayılan paket yönetimi biçimini seçin

NuGet iki paket yönetimi biçimine sahiptir: PackageReference ve packages.config. Paket Yönetimi altındaki açılan listeden kullanmak istediğiniz biçimi seçin. İlk paket yüklemesinde biçim seçimine izin verilip verilmeyeceğini de seçebilirsiniz.

Not

  • Bir proje her iki paket yönetimi biçimini de desteklemiyorsa NuGet, projeyle uyumlu olan paket yönetimi biçimini kullanır ve bu, seçeneklerde ayarladığınız varsayılan değer olmayabilir. Ardından NuGet, bu seçeneği belirtmiş olsanız bile ilk yüklemede seçim istemez.

  • Bir projedeki ilk paketi yüklemek için Paket Yöneticisi Konsolu kullanıyorsanız, Seçenekler'de bu seçenek seçili olsa bile NuGet biçim seçimini istemez.

Paketleri el ile veya otomatik olarak geri yükleme

Seçenekler'de paket geri yüklemeyi etkinleştirdikten sonra, Çözüm Gezgini'daçözüme sağ tıklayabilir ve istediğiniz zaman paketleri geri yüklemek için NuGet Paketlerini Geri Yükle'yi seçebilirsiniz.

Seçenekler'de otomatik geri yüklemeyi etkinleştirdiyseniz, şablondan proje oluşturduğunuzda veya proje oluşturduğunuzda Paket Geri Yükleme otomatik olarak gerçekleşir. NuGet 4.0+ için, SDK stilinde bir projede değişiklik yaptığınızda da geri yükleme otomatik olarak gerçekleşir.

kullanan <PackageReference>projeler için Visual Studio Çözüm Gezgini Bağımlılık Paketleri altında paket başvurularını>görebilirsiniz. Çözüm Gezgini'da bir derleme görüntüleme hata simgelerini el ile geri yüklediğinizde veya çalıştırdığınızda düzgün yüklenmeyen paketler. Projeye sağ tıklayın, NuGet Paketlerini Yönet'i seçin ve etkilenen paketleri kaldırıp yeniden yüklemek için NuGet Paket Yöneticisi kullanın. Daha fazla bilgi için bkz . Paketleri yeniden yükleme ve güncelleştirme.

Bu proje bu bilgisayarda eksik olan NuGet paketlerine başvuruda bulunuyor veya Bir veya daha fazla NuGet paketinin geri yüklenmesi gerekiyor ancak onay verilmediği için bulamıyor hatasını görüyorsanız otomatik geri yüklemeyi etkinleştirdiğinizden emin olun. Daha eski projeler için bkz . Otomatik paket geri yüklemeye geçiş. Ayrıca bkz . Paket geri yükleme hatalarını giderme.

dotnet CLI kullanarak geri yükleme

dotnet restore komutu, proje dosyasının ile <PackageReference>listelediğini paketleri geri yükler. Daha fazla bilgi için bkz . Proje dosyalarında PackageReference.

.NET Core 2.0 ve üzeri dotnet build ve dotnet run komutları paketleri otomatik olarak geri yükler. NuGet 4.0 itibarıyla ile dotnet restore aynı kodu nuget restoreçalıştırır.

ile dotnet restorebir paketi geri yüklemek için:

  1. Bir komut satırı açın ve proje dosyanızı içeren dizine geçin.
  2. dotnet restore'i çalıştırın.

Önemli

Proje dosyasına eksik bir paket başvurusu eklemek için dotnet add package (dotnet add package) komutunu da çalıştırın.restore

NuGet CLI kullanarak geri yükleme

NuGet CLI geri yükleme komutu eksik paketleri indirir ve yükler. Komut, paket başvuruları için PackageReference veya packages.config kullanan projelerde çalışır.

restore gibiinstall, komutu diske yalnızca paketler ekler, ancak proje dosyasını veya packages.config dosyasını değiştirmez. Proje bağımlılıkları eklemek için Visual Studio Paket Yöneticisi kullanıcı arabirimini veya Konsolunu kullanın.

Paketleri geri yüklemek için aşağıdaki komutu çalıştırın:

nuget restore <projectPath>

Komut, restore belirtilen proje yolunda bir çözüm dosyası veya package.config dosyası kullanır.

Örneğin, geçerli dizindeki MySolution.sln tüm paketlerini geri yüklemek için şunu çalıştırın:

nuget restore MySolution.sln

Not

kullanan PackageReferenceSDK stili olmayan projeler için, bunun yerine paketleri geri yüklemek için msbuild -t:restore kullanın.

MSBuild kullanarak geri yükleme

Visual Studio 2017 ve üzeri sürümlerde bulunan NuGet 4.x+ ve MSBuild 15.1+ içindeki paketleri geri yüklemek için msbuild -t:restore kullanabilirsiniz.

Bu komut, paket başvuruları için PackageReference kullanan projelerdeki paketleri geri yükler. MSBuild 16.5+ ile başlayarak, komutu ile -p:RestorePackagesConfig=truekullanıldığında packages.config paket başvurularını da destekler.

MSBuild geri yüklemesini kullanmak için:

  1. Geliştirici komut istemini arayarak ve MSBuild için gerekli tüm yolları yapılandıran Windows Başlat menüsünden istemi başlatarak bir Geliştirici Komut İstemi açın.

  2. Proje klasörüne geçin ve girin msbuild -t:restore.

  3. Geri yükleme tamamlandıktan sonra projeyi yeniden derlemek için girin msbuild . MSBuild çıkışının derlemenin başarıyla tamamlandığını gösterdiğinden emin olun.

Not

Derleme varsayılan hedef olduğundan komutunu kullanarak komutunu çalıştırabilir msbuild -restorerestore, projeyi yeniden yükleyebilir ve oluşturabilirsiniz. Daha fazla bilgi için bkz . Tek bir MSBuild komutuyla geri yükleme ve derleme.

Azure Pipelines veya Azure DevOps Server ile geri yükleme

Azure Pipelines'da bir derleme tanımı oluşturduğunuzda, herhangi bir derleme görevinden önce tanıma NuGet CLI geri yükleme veya dotnet CLI geri yükleme görevini ekleyebilirsiniz. Bazı derleme şablonları varsayılan olarak geri yükleme görevini içerir.

TFS 2013 veya sonraki bir Team Build şablonu kullanıyorsanız Azure DevOps Server ve TFS 2013 ve üzeri derleme sırasında paketleri otomatik olarak geri yükler. Ayrıca, komut satırı geri yükleme seçeneğini çalıştırmak için bir derleme adımı ekleyebilir veya isteğe bağlı olarak derleme şablonunu daha sonraki bir sürüme geçirebilirsiniz. Daha fazla bilgi için bkz . Team Foundation Derlemesi ile paket geri yüklemesini ayarlama.

Paket sürümlerini kısıtla

Herhangi bir yöntem aracılığıyla NuGet geri yükleme, packages.config veya proje dosyasında belirttiğiniz tüm sürüm kısıtlamalarına göre hareket eder.

  • packages.config dosyasında bağımlılıkta bir allowedVersions aralık belirtebilirsiniz. Daha fazla bilgi için bkz . Yükseltme sürümleriyle ilgili kısıtlamalar. Örneğin:

    <package id="Newtonsoft.json" version="6.0.4" allowedVersions="[6,7)" />
    
  • Proje dosyasında, bağımlılığın özelliğinde Version sürüm aralığını belirtebilirsiniz. Örneğin:

    <PackageReference Include="Newtonsoft.json" Version="[6,7)" />
    

Her iki durumda da Paket sürümü oluşturma bölümünde açıklanan gösterimi kullanın.

Uzak paket kaynaklarından geri yüklemeye zorlama

Varsayılan olarak, NuGet geri yükleme işlemleri genel paketleri ve önbellek klasörlerini yönetme bölümünde açıklandığı gibi yerel genel paketlerden ve http-cache klasörlerinden paketleri kullanır. Bu yerel paketleri kullanmaktan kaçınmak için aşağıdaki seçenekleri kullanın.

Tüm yerel önbellekleri temizlemek için:

  • Visual Studio'da, Araçlar>Seçenekleri>NuGet Paket Yöneticisi> Genel'de Tüm NuGet Önbelleklerini Temizle düğmesini seçin.
  • dotnet CLI'sinde kullanın dotnet nuget locals all --clear.
  • NuGet CLI'da kullanın nuget locals all -clear.

Genel paketler klasöründeki paketleri kullanmaktan kaçınmak için:

  • veya dotnet nuget locals global-packages --clearkullanarak nuget locals global-packages -clear klasörü temizleyin.
  • NUGET_PACKAGES ortam değişkenini geçici olarak farklı bir klasöre ayarlayın.
  • için veya repositoryPath packages.config için PackageReferencefarklı bir klasöre ayarlayan globalPackagesFolder bir NuGet.Config dosyası oluşturun. Daha fazla bilgi için bkz . yapılandırma ayarları.
  • Yalnızca MSBuild için özelliğiyle RestorePackagesPath farklı bir klasör belirtin.

HTTP önbelleğinde paketlerin kullanılmasını önlemek için:

  • veya dotnet nuget locals http-cache --clearkullanarak nuget locals http-cache -clear önbelleği temizleyin.
  • NUGET_HTTP_CACHE_PATH ortam değişkenini geçici olarak farklı bir klasöre ayarlayın.
  • için nuget restoreveya için dotnet restoreseçeneğini kullanın--no-http-cache.-NoHttpCache Bu seçenekler Visual Studio Paket Yöneticisi veya Konsol aracılığıyla geri yükleme işlemlerini etkilemez.

Otomatik paket geri yüklemesine geçiş

NuGet'in önceki sürümleri MSBuild ile tümleşik paket geri yüklemesini destekliyor. Kullanım dışı bırakılan MSBuild ile tümleşik paket geri yüklemesini kullanan projelerin otomatik paket geri yüklemesine geçirilmesi gerekir.

Bu projeler genellikle üç dosya içeren bir .nuget klasörü içerir: NuGet.config, nuget.exe ve NuGet.targets. NuGet.targets dosyası, NuGet'in MSBuild ile tümleşik yaklaşımı kullanmasına neden olduğundan kaldırılması gerekir.

Otomatik paket geri yüklemesine geçmek için:

  1. Otomatik paket geri yüklemeyi etkinleştirin.
  2. Visual Studio’yu kapatın.
  3. .nuget/nuget.exe ve .nuget/NuGet.targets değerlerini silin.
  4. Her proje dosyası için öğesini kaldırın <RestorePackages> ve NuGet.targets başvurularını kaldırın.

Otomatik paket geri yüklemesini test etmek için:

  1. Çözümden packages klasörünü kaldırın.
  2. Çözümü Visual Studio'da açın ve bir derleme başlatın. Otomatik paket geri yükleme, her bağımlılık paketini kaynak denetimine eklemeden indirmeli ve yüklemelidir.

Sonraki adımlar