dotnet restore
Bu makale şunlar için geçerlidir: ✔️ .NET Core 3.1 SDK ve sonraki sürümler
Veri Akışı Adı
dotnet restore
- Bir projenin bağımlılıklarını ve araçlarını geri yükler.
Özet
dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel]
[-f|--force] [--force-evaluate] [--ignore-failed-sources]
[--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
[--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[--use-lock-file] [-v|--verbosity <LEVEL>]
dotnet restore -h|--help
Açıklama
.NET projesi genellikle NuGet paketlerinde ek işlevsellik sağlayan dış kitaplıklara başvurur. Bu dış bağımlılıklara proje dosyasında (.csproj veya .vbproj) başvurulur. Komutunu çalıştırdığınızda dotnet restore
,.NET CLI bu bağımlılıkları aramak ve gerekirse indirmek için NuGet kullanır. Ayrıca projenin gerektirdiği tüm bağımlılıkların birbiriyle uyumlu olmasını ve aralarında çakışma olmamasını sağlar. Komut tamamlandıktan sonra, projenin gerektirdiği tüm bağımlılıklar yerel önbellekte kullanılabilir ve uygulamayı derlemek ve çalıştırmak için .NET CLI tarafından kullanılabilir.
Çoğu durumda, NuGet geri yüklemesi gerekiyorsa aşağıdaki komutlar bunu örtük olarak çalıştırdığından komutunu açıkça kullanmanız dotnet restore
gerekmez:
Bazen, bu komutlarla örtük NuGet geri yüklemesini çalıştırmak zor olabilir. Örneğin, derleme sistemleri gibi bazı otomatik sistemlerin, ağ kullanımını denetleyebilmeleri için geri yüklemenin ne zaman gerçekleşebileceğini denetlemek için açıkça çağırmaları dotnet restore
gerekir. Örtük NuGet geri yüklemesini önlemek için bayrağını --no-restore
bu komutlardan herhangi biriyle kullanabilirsiniz.
Not
Geri yükleme işlemleri sırasında imzalanan paket doğrulaması, hem kod imzalama hem de zaman damgası için geçerli bir sertifika kök deposu gerektirir. Daha fazla rahatsızlık için bkz . NuGet imzalı paket doğrulama.
Akışları belirtme
Bağımlılıkları geri yüklemek için NuGet'in paketlerin bulunduğu akışlara ihtiyacı vardır. Akışlar genellikle nuget.config yapılandırma dosyası aracılığıyla sağlanır. .NET SDK yüklendiğinde varsayılan bir yapılandırma dosyası sağlanır. Ek akışlar belirtmek için aşağıdakilerden birini yapın:
- Proje dizininde kendi nuget.config dosyanızı oluşturun. Daha fazla bilgi için bu makalenin devamında yer alan Yaygın NuGet yapılandırmaları ve nuget.config farklılıkları bölümüne bakın.
- gibi
dotnet nuget add source
komutları kullanındotnet nuget
.
nuget.config akışlarını seçeneğiyle -s
geçersiz kılabilirsiniz.
Kimliği doğrulanmış akışları kullanma hakkında bilgi için bkz . Kimliği doğrulanmış akışlardan paketleri kullanma.
Genel paketler klasörü
Bağımlılıklar için, geri yüklenen paketlerin geri yükleme işlemi sırasında nereye yerleştirileceğini bağımsız değişkenini --packages
kullanarak belirtebilirsiniz. Belirtilmezse, tüm işletim sistemlerinde kullanıcının giriş dizinindeki dizinde .nuget/packages
bulunan varsayılan NuGet paket önbelleği kullanılır. Örneğin, Linux'ta /home/user1 veya Windows'da C:\Users\user1 .
Projeye özgü araçlar
Projeye özgü araçlar için önce dotnet restore
aracın paketlendiği paketi geri yükler ve ardından aracın bağımlılıklarını proje dosyasında belirtildiği gibi geri yüklemeye devam eder.
nuget.config farklılıkları
Komutun dotnet restore
davranışı, varsa nuget.config dosyasındaki ayarlardan etkilenir. Örneğin, nuget.config içinde ayarının ayarlanmasıglobalPackagesFolder
, geri yüklenen NuGet paketlerini belirtilen klasöre yerleştirir. Bu, komutta seçeneğini belirtmeye --packages
dotnet restore
alternatiftir. Daha fazla bilgi için nuget.config başvurusuna bakın.
Yoksayılan dotnet restore
üç özel ayar vardır:
-
Bağlama yeniden yönlendirmeleri öğelerle
<PackageReference>
çalışmaz ve .NET yalnızca NuGet paketleri için öğeleri destekler<PackageReference>
. -
Bu ayar Visual Studio'ya özgüdür ve .NET için geçerli değildir. .NET bir
packages.config
dosya kullanmaz ve bunun yerine NuGet paketleri için öğeleri kullanır<PackageReference>
. -
.NET 5.0.100 SDK'sında platformlar arası paket imzası doğrulaması desteği eklendi.
İş yükü bildirimi indirmeleri
Bu komutu çalıştırdığınızda, iş yükleri için reklam bildirimlerini zaman uyumsuz bir arka plan indirme işlemi başlatır. Bu komut tamamlandığında indirme işlemi hala çalışıyorsa indirme durdurulur. Daha fazla bilgi için bkz . Reklam bildirimleri.
Bağımsız değişkenler
ROOT
Geri yükleneceği proje dosyasının isteğe bağlı yolu.
Seçenekler
-a|--arch <ARCHITECTURE>
Hedef mimariyi belirtir. Bu, sağlanan değerin varsayılan RID ile birleştirildiği Çalışma Zamanı Tanımlayıcısı'nı (RID) ayarlamak için bir kısaltma söz dizimidir. Örneğin, bir
win-x64
makinede, belirterek--arch x86
RID değerini olarakwin-x86
ayarlar. Bu seçeneği kullanırsanız, seçeneğini kullanmayın-r|--runtime
. .NET 6 Preview 7 sürümünden itibaren kullanılabilir.
--configfile <FILE>
Kullanılacak NuGet yapılandırma dosyası (nuget.config). Belirtilirse, yalnızca bu dosyadaki ayarlar kullanılır. Belirtilmezse, geçerli dizindeki yapılandırma dosyalarının hiyerarşisi kullanılır. Daha fazla bilgi için bkz . Yaygın NuGet Yapılandırmaları.
--disable-build-servers
Komutu kalıcı derleme sunucularını yoksaymaya zorlar. Bu seçenek, derleme önbelleğinin tüm kullanımını devre dışı bırakmak için tutarlı bir yol sağlar ve bu da bir derlemeyi sıfırdan zorlar. Önbelleklere güvenmeyen bir derleme, önbellekler herhangi bir nedenle bozulduğunda veya yanlış olduğunda kullanışlıdır. .NET 7 SDK'sı ile kullanılabilir.
--disable-parallel
Birden çok projenin paralel olarak geri yüklenmesini devre dışı bırakır.
--force
Son geri yükleme başarılı olsa bile tüm bağımlılıkların çözümlenmesine zorlar. Bu bayrağın belirtilmesi, project.assets.json dosyasını silmekle aynıdır.
--force-evaluate
Bir kilit dosyası zaten mevcut olsa bile geri yüklemeyi tüm bağımlılıkları yeniden değerlendirmeye zorlar.
-?|-h|--help
komutunun nasıl kullanılacağına ilişkin bir açıklama yazdırır.
--ignore-failed-sources
Yalnızca sürüm gereksinimini karşılayan paketler varsa başarısız kaynaklar hakkında uyarır.
--interactive
Komutun durmasına ve kullanıcı girişini veya eylemini beklemesine izin verir. Örneğin, kimlik doğrulamasını tamamlamak için.
--lock-file-path <LOCK_FILE_PATH>
Proje kilit dosyasının yazıldığı çıkış konumu. Varsayılan olarak, bu PROJECT_ROOT\packages.lock.json'dır.
--locked-mode
Proje kilit dosyasını güncelleştirmeye izin verme.
--no-cache
HTTP isteklerini önbelleğe almamak için belirtir.
--no-dependencies
Projeden projeye (P2P) başvurularla bir projeyi geri yüklerken, başvuruları değil kök projeyi geri yükler.
--packages <PACKAGES_DIRECTORY>
Geri yüklenen paketlerin dizinini belirtir.
-r|--runtime <RUNTIME_IDENTIFIER>
Paket geri yükleme için bir çalışma zamanı belirtir. Bu, .csproj dosyasındaki etiketinde açıkça listelenmeyen
<RuntimeIdentifiers>
çalışma zamanları için paketleri geri yüklemek için kullanılır. Çalışma Zamanı Tanımlayıcılarının (RID) listesi için RID kataloğuna bakın.-s|--source <SOURCE>
Geri yükleme işlemi sırasında kullanılacak NuGet paket kaynağının URI'sini belirtir. Bu ayar, nuget.config dosyalarında belirtilen tüm kaynakları geçersiz kılar. Bu seçenek birden çok kez belirtilerek birden çok kaynak sağlanabilir.
--tl:[auto|on|off]
Derleme çıkışı için terminal günlükçüsunun kullanılıp kullanılmayacağını belirtir. Varsayılan değer, terminal günlüğünü etkinleştirmeden önce ortamı doğrulayan değeridir
auto
. Ortam denetimi, terminalin modern çıkış özelliklerini kullanabileceğini ve yeni günlükçü'leri etkinleştirmeden önce yeniden yönlendirilmiş standart çıkış kullanmadığını doğrular.on
ortam denetimini atlar ve terminal günlüğünü etkinleştirir.off
ortam denetimini atlar ve varsayılan konsol günlükçüsüsü kullanır.Terminal günlükçü, geri yükleme aşamasını ve ardından derleme aşamasını gösterir. Her aşamada, şu anda oluşturulan projeler terminalin en altında görünür. Derlemeye alınan her proje, hem şu anda derlenen MSBuild hedefini hem de bu hedefe harcanan süreyi oluşturur. Derleme hakkında daha fazla bilgi edinmek için bu bilgileri arayabilirsiniz. Bir projenin oluşturulması tamamlandığında, şunları yakalayan tek bir "derleme tamamlandı" bölümü yazılır:
- Oluşturulan projenin adı.
- Hedef çerçeve (çok hedefliyse).
- Bu derlemenin durumu.
- Bu derlemenin birincil çıkışı (köprüdür).
- Bu proje için oluşturulan tüm tanılamalar.
Bu seçenek .NET 8'den itibaren kullanılabilir.
--use-current-runtime, --ucr [true|false]
öğesini
RuntimeIdentifier
makinenizden birine göre taşınabilirRuntimeIdentifier
bir platforma ayarlar. Bu, vePublishReadyToRun
gibiPublishSingleFile
PublishSelfContained
PublishAot
SelfContained
birRuntimeIdentifier
gerektiren özelliklerde örtük olarak gerçekleşir. Özelliği false olarak ayarlanırsa, bu örtük çözüm artık gerçekleşmez.--use-lock-file
Proje kilit dosyasının oluşturulmasını ve geri yükleme ile kullanılmasını sağlar.
-v|--verbosity <LEVEL>
Komutun ayrıntı düzeyini ayarlar. İzin verilen değerler ,
m[inimal]
,n[ormal]
,d[etailed]
vediag[nostic]
değerleridirq[uiet]
. Varsayılan değer:minimal
. Daha fazla bilgi için bkz. LoggerVerbosity.
Örnekler
Geçerli dizinde proje için bağımlılıkları ve araçları geri yükleyin:
dotnet restore
Verilen yolda bulunan proje için
app1
bağımlılıkları ve araçları geri yükleyin:dotnet restore ./projects/app1/app1.csproj
Kaynak olarak sağlanan dosya yolunu kullanarak geçerli dizindeki projenin bağımlılıklarını ve araçlarını geri yükleyin:
dotnet restore -s c:\packages\mypackages
Kaynak olarak sağlanan iki dosya yolunu kullanarak geçerli dizindeki projenin bağımlılıklarını ve araçlarını geri yükleyin:
dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
Ayrıntılı çıktıyı gösteren geçerli dizinde projenin bağımlılıklarını ve araçlarını geri yükleyin:
dotnet restore --verbosity detailed
Güvenlik açıklarını denetleme
.NET 8'den dotnet restore
başlayarak NuGet güvenlik denetimini içerir. Bu denetim, etkilenen paket adına, güvenlik açığının önem derecesine ve daha fazla ayrıntı için öneriye yönelik bir bağlantı içeren bir güvenlik açıkları raporu oluşturur.
Güvenlik denetimini geri çevirmek için proje dosyanızda MSBuild özelliğini olarak false
ayarlayın<NuGetAudit>
.
Bilinen güvenlik açığı veri kümesini almak için NuGet.org merkezi kayıt defterinin paket kaynaklarınızdan biri olarak tanımlandığından emin olun:
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
MSBuild özelliğini ayarlayarak <NuGetAuditLevel>
denetimin başarısız olacağı düzeyi yapılandırabilirsiniz. Olası değerler , , moderate
high
ve critical
değerleridirlow
. Örneğin, yalnızca orta, yüksek ve kritik öneriler görmek istiyorsanız özelliğini olarak moderate
ayarlayabilirsiniz.
.NET 9'dan başlayarak NuGet varsayılan olarak hem doğrudan hem de geçişli paket başvurularını denetler. .NET 8'de yalnızca doğrudan paket başvuruları denetlenmektedir. MSBuild özelliğini direct
veya all
olarak ayarlayarak <NuGetAuditMode>
modu değiştirebilirsiniz.
Daha fazla bilgi için bkz . Güvenlik açıkları için paket bağımlılıklarını denetleme.