Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini berlaku untuk: ✔️ .NET 6 SDK dan versi yang lebih baru
Nama
dotnet restore - Memulihkan dependensi dan alat proyek.
Sinopsis
dotnet restore [<PROJECT>|<SOLUTION>|<FILE>]
[-a|--arch <ARCHITECTURE>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel] [-f|--force] [--force-evaluate]
[--ignore-failed-sources] [--interactive] [--lock-file-path <LOCK_FILE_PATH>]
[--locked-mode] [--no-dependencies] [--no-http-cache]
[--os <OS>] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--tl:[auto|on|off]] [--ucr|--use-current-runtime] [--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 informasi 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 nugetperintah sepertidotnet 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:
-
Pengalihan pengikatan tidak berfungsi dengan
<PackageReference>elemen dan .NET hanya mendukung<PackageReference>elemen untuk paket NuGet. -
Pengaturan ini khusus untuk Visual Studio dan tidak berlaku untuk .NET. .NET tidak menggunakan
packages.configfile dan sebaliknya menggunakan<PackageReference>elemen untuk paket NuGet. -
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
PROJECT | SOLUTION | FILE
File proyek atau solusi atau C# (aplikasi berbasis file) untuk dioperasikan. Jika file tidak ditentukan, MSBuild mencari direktori saat ini untuk proyek atau solusi.
PROJECTadalah jalur dan nama file file proyek C#, F#, atau Visual Basic, atau jalur ke direktori yang berisi file proyek C#, F#, atau Visual Basic.SOLUTIONadalah jalur dan nama file file solusi ( ekstensi.sln atau .slnx), atau jalur ke direktori yang berisi file solusi.FILEadalah argumen yang ditambahkan dalam .NET 10. Jalur dan nama file aplikasi berbasis file. Aplikasi berbasis file terkandung dalam satu file yang dibangun dan dijalankan tanpa file proyek (.csproj) yang sesuai. Untuk informasi selengkapnya, lihat Membangun aplikasi C# berbasis file.
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 x86akan mengatur RID kewin-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-serversMemaksa 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-parallelMenonaktifkan pemulihan beberapa proyek secara paralel.
--forceMemaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.
--force-evaluateMemaksa pemulihan untuk mengevaluasi kembali semua dependensi bahkan jika file kunci sudah ada.
--ignore-failed-sourcesHanya peringatkan tentang sumber yang gagal jika ada paket yang memenuhi persyaratan versi.
-
--interactiveMemungkinkan 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-modeJangan izinkan memperbarui file kunci proyek.
--no-dependenciesSaat memulihkan proyek dengan referensi project-to-project (P2P), memulihkan proyek root dan bukan referensi.
--no-http-cacheNonaktifkan penembolokan HTTP untuk paket.
--osMenentukan sistem operasi (OS) target. Ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan dikombinasikan dengan RID default. Misalnya, pada komputer
win-x64, menentukan--os linuxakan mengatur RID kelinux-x64.Diperkenalkan dalam .NET SDK 10.0.100
--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.
-
--ucr|--use-current-runtimeGunakan runtime saat ini sebagai runtime target.
--use-lock-fileMemungkinkan file kunci proyek dibuat dan digunakan dengan pemulihan.
-
--tl:[auto|on|off]Menentukan apakah Terminal Logger 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.onmelewati pemeriksaan lingkungan dan mengaktifkan pengelogan terminal.offmelewati pemeriksaan lingkungan dan menggunakan pencatat konsol default.Terminal Logger 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.
-
-v|--verbosity <LEVEL>Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah
q[uiet],m[inimal],n[ormal],d[etailed], dandiag[nostic]. Default adalahminimal. Untuk informasi selengkapnya, lihat LoggerVerbosity . -
-?|-h|--helpMencetak deskripsi cara menggunakan perintah.
Contoh
Pulihkan dependensi dan alat untuk proyek di direktori saat ini:
dotnet restorePulihkan dependensi dan alat untuk proyek yang
app1ditemukan di jalur yang diberikan:dotnet restore ./projects/app1/app1.csprojPulihkan dependensi dan alat untuk proyek di direktori saat ini menggunakan jalur file yang disediakan sebagai sumber:
dotnet restore -s c:\packages\mypackagesPulihkan 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\myotherpackagesPulihkan 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 mendapatkan data kerentanan, mulai dari .NET 9, Anda dapat menggunakan auditSources selain packageSources. Jika tidak ada sumber audit yang disediakan, dotnet restore gunakan sumber paket sebagai gantinya. NuGet mengaudit sumber apa pun selama sumber menyediakan VulnerabilityInfo sumber daya.
Untuk mencantumkan NuGet.org sebagai sumber audit, tentukan yang berikut ini dalam file nuget.config :
<configuration>
<auditSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</auditSources>
</configuration>
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.
Di .NET 8 dan .NET 9, hanya referensi paket langsung yang diaudit secara default. Mulai dari .NET 10, NuGet mengaudit referensi paket langsung dan transitif secara default. Anda dapat mengubah mode dengan mengatur <NuGetAuditMode> properti MSBuild ke direct atau all.
Untuk informasi selengkapnya, lihat Mengaudit dependensi paket untuk kerentanan keamanan.