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:

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 --packagesdotnet restore alternatiftir. Daha fazla bilgi için nuget.config başvurusuna bakın.

Yoksayılan dotnet restore üç özel ayar vardır:

  • bindingRedirects

    Bağlama yeniden yönlendirmeleri öğelerle <PackageReference> çalışmaz ve .NET yalnızca NuGet paketleri için öğeleri destekler <PackageReference> .

  • Çözüm

    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> .

  • trustedSigners

    .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 olarak win-x86ayarlar. 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şınabilir RuntimeIdentifier bir platforma ayarlar. Bu, ve PublishReadyToRungibi PublishSingleFilePublishSelfContainedPublishAotSelfContainedbir RuntimeIdentifiergerektiren ö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]ve diag[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 başlayarak için dotnet restoreNuGet güvenlik denetimini kabul edebilirsiniz. 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 kabul etmek için proje dosyanızda MSBuild özelliğini olarak true ayarlayın<NuGetAudit>. Ayrıca, bilinen güvenlik açığı veri kümesini almak için paket kaynaklarınızdan biri olarak tanımlanmış NuGet.org merkezi kayıt defterine sahip olduğunuzdan 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 , , moderatehighve criticaldeğerleridirlow. Örneğin, yalnızca orta, yüksek ve kritik öneriler görmek istiyorsanız özelliğini olarak moderateayarlayabilirsiniz.