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 restore
msbuild -t:restore
, veya Visual Studio aracılığıyla el ile nuget restore
geri 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.
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ı packageRestore
True
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'da derleme 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 restore
bir paketi geri yüklemek için:
- Bir komut satırı açın ve proje dosyanızı içeren dizine geçin.
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 PackageReference
SDK 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=true
kullanıldığında packages.config paket başvurularını da destekler.
MSBuild geri yüklemesini kullanmak için:
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.
Proje klasörüne geçin ve girin
msbuild -t:restore
.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 -restore
restore
, 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 --clear
kullanaraknuget 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çinPackageReference
farklı bir klasöre ayarlayanglobalPackagesFolder
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 --clear
kullanaraknuget 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 restore
veya içindotnet restore
seç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:
- Otomatik paket geri yüklemeyi etkinleştirin.
- Visual Studio’yu kapatın.
- .nuget/nuget.exe ve .nuget/NuGet.targets değerlerini silin.
- 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:
- Çözümden packages klasörünü kaldırın.
- Çö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.