Bagikan melalui


pemulihan dotnet

Artikel ini berlaku untuk: ✔️ .NET Core 3.1 SDK dan versi yang lebih baru

Nama

dotnet restore - Memulihkan dependensi dan alat proyek.

Sinopsis

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

Deskripsi

Proyek .NET biasanya mereferensikan pustaka eksternal dalam paket NuGet yang menyediakan fungsionalitas tambahan. Dependensi eksternal ini dirujuk dalam file proyek (.csproj atau .vbproj). Saat Anda menjalankan dotnet restore perintah, .NET CLI menggunakan NuGet untuk mencari dependensi ini dan mengunduhnya jika perlu. Ini juga memastikan bahwa semua dependensi yang diperlukan oleh proyek kompatibel satu sama lain dan bahwa tidak ada konflik di antara mereka. Setelah perintah selesai, semua dependensi yang diperlukan oleh proyek tersedia dalam cache lokal dan dapat digunakan oleh .NET CLI untuk membangun dan menjalankan aplikasi.

Dalam kebanyakan kasus, Anda tidak perlu secara eksplisit menggunakan dotnet restore perintah, karena jika pemulihan NuGet diperlukan, perintah berikut menjalankannya secara implisit:

Terkadang, mungkin tidak nyaman untuk menjalankan pemulihan NuGet implisit dengan perintah ini. Misalnya, beberapa sistem otomatis, seperti sistem build, perlu memanggil dotnet restore secara eksplisit untuk mengontrol kapan pemulihan terjadi sehingga mereka dapat mengontrol penggunaan jaringan. Untuk mencegah pemulihan NuGet implisit, Anda dapat menggunakan --no-restore bendera dengan salah satu perintah ini.

Catatan

Verifikasi paket yang ditandatangani selama operasi pemulihan memerlukan penyimpanan akar sertifikat yang valid untuk penandatanganan kode dan tanda waktu. Untuk inforomasi selengkapnya, lihat Verifikasi paket yang ditandatangani NuGet.

Tentukan umpan

Untuk memulihkan dependensi, NuGet memerlukan umpan tempat paket berada. Umpan biasanya disediakan melalui file konfigurasi nuget.config . File konfigurasi default disediakan saat .NET SDK diinstal. Untuk menentukan umpan tambahan, lakukan salah satu hal berikut ini:

  • Buat file nuget.config Anda sendiri di direktori proyek. Untuk informasi selengkapnya, lihat Konfigurasi NuGet umum dan perbedaan nuget.config nanti di artikel ini.
  • Gunakan dotnet nuget perintah seperti dotnet nuget add source.

Anda dapat mengambil alih umpan nuget.config dengan -s opsi .

Untuk informasi tentang cara menggunakan umpan terautentikasi, lihat Menggunakan paket dari umpan terautentikasi.

Folder paket global

Untuk dependensi, Anda dapat menentukan di mana paket yang dipulihkan ditempatkan selama operasi pemulihan menggunakan --packages argumen . Jika tidak ditentukan, cache paket NuGet default digunakan, yang ditemukan di .nuget/packages direktori di direktori beranda pengguna pada semua sistem operasi. Misalnya, /home/user1 di Linux atau C:\Users\user1 di Windows.

Alat khusus proyek

Untuk alat khusus proyek, dotnet restore pertama-tama pulihkan paket tempat alat dikemas, lalu lanjutkan untuk memulihkan dependensi alat seperti yang ditentukan dalam file proyeknya.

perbedaan nuget.config

Perilaku dotnet restore perintah dipengaruhi oleh pengaturan dalam file nuget.config , jika ada. Misalnya, mengatur globalPackagesFolder di nuget.config menempatkan paket NuGet yang dipulihkan di folder yang ditentukan. Ini adalah alternatif untuk menentukan --packages opsi pada dotnet restore perintah. Untuk informasi selengkapnya, lihat referensi nuget.config.

Ada tiga pengaturan khusus yang dotnet restore mengabaikan:

  • bindingRedirects

    Pengalihan pengikatan tidak berfungsi dengan <PackageReference> elemen dan .NET hanya mendukung <PackageReference> elemen untuk paket NuGet.

  • larutan

    Pengaturan ini khusus untuk Visual Studio dan tidak berlaku untuk .NET. .NET tidak menggunakan packages.config file dan sebaliknya menggunakan <PackageReference> elemen untuk paket NuGet.

  • trustedSigners

    Dukungan untuk verifikasi tanda tangan paket lintas platform ditambahkan di .NET 5.0.100 SDK.

Pengunduhan manifes beban kerja

Saat Anda menjalankan perintah ini, pengunduhan latar belakang asinkron manifes iklan untuk beban kerja akan dimulai. Jika unduhan masih berjalan saat perintah ini selesai, unduhan akan dihentikan. Untuk informasi selengkapnya, lihat Manifes iklan.

Argumen

  • ROOT

    Jalur opsional ke file proyek untuk dipulihkan.

Opsi

  • -a|--arch <ARCHITECTURE>

    Menentukan arsitektur target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer win-x64, menentukan --arch x86 akan mengatur RID ke win-x86. Jika Anda menggunakan opsi ini, jangan gunakan opsi -r|--runtime. Tersedia sejak .NET 6 Preview 7.

  • --configfile <FILE>

    File konfigurasi NuGet (nuget.config) untuk digunakan. Jika ditentukan, hanya pengaturan dari file ini yang akan digunakan. Jika tidak ditentukan, hierarki file konfigurasi dari direktori saat ini akan digunakan. Untuk informasi selengkapnya, lihat Konfigurasi NuGet Umum.

  • --disable-build-servers

    Memaksa perintah untuk mengabaikan server build persisten apa pun. Opsi ini menyediakan cara yang konsisten untuk menonaktifkan semua penggunaan penembolokan build, yang memaksa build dari awal. Build yang tidak mengandalkan cache berguna ketika cache mungkin rusak atau salah karena beberapa alasan. Tersedia sejak .NET 7 SDK.

  • --disable-parallel

    Menonaktifkan pemulihan beberapa proyek secara paralel.

  • --force

    Memaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.

  • --force-evaluate

    Memaksa pemulihan untuk mengevaluasi kembali semua dependensi bahkan jika file kunci sudah ada.

  • -?|-h|--help

    Mencetak deskripsi cara menggunakan perintah.

  • --ignore-failed-sources

    Hanya peringatkan tentang sumber yang gagal jika ada paket yang memenuhi persyaratan versi.

  • --interactive

    Memungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi.

  • --lock-file-path <LOCK_FILE_PATH>

    Lokasi output tempat file kunci proyek ditulis. Secara default, ini PROJECT_ROOT \packages.lock.json.

  • --locked-mode

    Jangan izinkan memperbarui file kunci proyek.

  • --no-cache

    Menentukan untuk tidak menyimpan permintaan HTTP cache.

  • --no-dependencies

    Saat memulihkan proyek dengan referensi project-to-project (P2P), memulihkan proyek root dan bukan referensi.

  • --packages <PACKAGES_DIRECTORY>

    Menentukan direktori untuk paket yang dipulihkan.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    Menentukan runtime untuk pemulihan paket. Ini digunakan untuk memulihkan paket untuk runtime yang tidak secara eksplisit tercantum dalam <RuntimeIdentifiers> tag dalam file .csproj . Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID.

  • -s|--source <SOURCE>

    Menentukan URI sumber paket NuGet yang akan digunakan selama operasi pemulihan. Pengaturan ini mengambil alih semua sumber yang ditentukan dalam file nuget.config. Beberapa sumber dapat disediakan dengan menentukan opsi ini beberapa kali.

  • --tl:[auto|on|off]

    Menentukan apakah pencatat terminal harus digunakan untuk output build. Defaultnya adalah auto, yang pertama memverifikasi lingkungan sebelum mengaktifkan pengelogan terminal. Pemeriksaan lingkungan memverifikasi bahwa terminal mampu menggunakan fitur output modern dan tidak menggunakan output standar yang dialihkan sebelum mengaktifkan pencatat baru. on melewati pemeriksaan lingkungan dan mengaktifkan pengelogan terminal. off melewati pemeriksaan lingkungan dan menggunakan pencatat konsol default.

    Pencatat terminal menunjukkan fase pemulihan diikuti oleh fase build. Selama setiap fase, proyek bangunan saat ini muncul di bagian bawah terminal. Setiap proyek yang membangun menghasilkan target MSBuild yang saat ini sedang dibangun dan jumlah waktu yang dihabiskan untuk target tersebut. Anda dapat mencari informasi ini untuk mempelajari lebih lanjut tentang build. Setelah proyek selesai dibangun, satu bagian "build completed" ditulis yang menangkap:

    • Nama proyek bawaan.
    • Kerangka kerja target (jika multi-target).
    • Status build tersebut.
    • Output utama build tersebut (yang di-hyperlink).
    • Diagnostik apa pun yang dihasilkan untuk proyek tersebut.

    Opsi ini tersedia mulai dari .NET 8.

  • --use-current-runtime, --ucr [true|false]

    RuntimeIdentifier Mengatur ke platform portabel RuntimeIdentifier berdasarkan salah satu komputer Anda. Ini terjadi secara implisit dengan properti yang memerlukan RuntimeIdentifier, seperti SelfContained, , PublishAotPublishSelfContained, PublishSingleFile, dan PublishReadyToRun. Jika properti diatur ke false, resolusi implisit tersebut tidak akan lagi terjadi.

  • --use-lock-file

    Memungkinkan file kunci proyek dibuat dan digunakan dengan pemulihan.

  • -v|--verbosity <LEVEL>

    Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah q[uiet], m[inimal], n[ormal], d[etailed], dan diag[nostic]. Default adalah minimal. Untuk informasi selengkapnya, lihat LoggerVerbosity .

Contoh

  • Pulihkan dependensi dan alat untuk proyek di direktori saat ini:

    dotnet restore
    
  • Pulihkan dependensi dan alat untuk proyek yang app1 ditemukan di jalur yang diberikan:

    dotnet restore ./projects/app1/app1.csproj
    
  • Pulihkan dependensi dan alat untuk proyek di direktori saat ini menggunakan jalur file yang disediakan sebagai sumber:

    dotnet restore -s c:\packages\mypackages
    
  • Pulihkan dependensi dan alat untuk proyek di direktori saat ini menggunakan dua jalur file yang disediakan sebagai sumber:

    dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
    
  • Pulihkan dependensi dan alat untuk proyek di direktori saat ini yang menunjukkan output terperinci:

    dotnet restore --verbosity detailed
    

Audit untuk kerentanan keamanan

Mulai dari .NET 8, dotnet restore termasuk audit keamanan NuGet. Audit ini menghasilkan laporan kerentanan keamanan dengan nama paket yang terpengaruh, tingkat keparahan kerentanan, dan tautan ke saran untuk detail lebih lanjut.

Untuk menolak audit keamanan, atur <NuGetAudit> properti MSBuild ke false dalam file proyek Anda.

Untuk mengambil himpunan data kerentanan yang diketahui, pastikan Anda memiliki registri pusat NuGet.org yang didefinisikan sebagai salah satu sumber paket Anda:

<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>

Anda dapat mengonfigurasi tingkat di mana audit akan gagal dengan mengatur <NuGetAuditLevel> properti MSBuild. Nilai yang mungkin adalah low, moderate, high, dan critical. Misalnya jika Anda hanya ingin melihat saran moderat, tinggi, dan kritis, Anda dapat mengatur properti ke moderate.

Mulai dari .NET 9, NuGet mengaudit referensi paket langsung dan transitif , secara default. Di .NET 8, hanya referensi paket langsung yang diaudit. Anda dapat mengubah mode dengan mengatur <NuGetAuditMode> properti MSBuild ke direct atau all.

Untuk informasi selengkapnya, lihat Mengaudit dependensi paket untuk kerentanan keamanan.