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 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.config
file 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
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 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-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 portabelRuntimeIdentifier
berdasarkan salah satu komputer Anda. Ini terjadi secara implisit dengan properti yang memerlukanRuntimeIdentifier
, sepertiSelfContained
, ,PublishAot
PublishSelfContained
,PublishSingleFile
, danPublishReadyToRun
. 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]
, dandiag[nostic]
. Default adalahminimal
. 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.