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.
Penting
Isi ini tidak digunakan lagi. Proyek harus menggunakan format PackageReference. Pelajari cara memigrasikan proyek project.json Anda ke PackageReference. Visual Studio 2026 secara otomatis memigrasikan project.json pada waktu pemuatan solusi. .NET 10 SDK &NuGet.exe 7.0 tidak mendukung proyek project.json.
NuGet 3.x
File project.json mempertahankan daftar paket yang digunakan dalam proyek, yang dikenal sebagai format manajemen paket. Ini menggantikan packages.config tetapi pada gilirannya digantikan oleh PackageReference dengan NuGet 4.0+.
File project.lock.json (dijelaskan di bawah) juga digunakan dalam proyek yang menggunakan project.json.
project.json memiliki struktur dasar berikut, di mana masing-masing dari empat objek tingkat atas dapat memiliki sejumlah objek anak:
{
"dependencies": {
"PackageID" : "{version_constraint}"
},
"frameworks" : {
"TxM" : {}
},
"runtimes" : {
"RID": {}
},
"supports" : {
"CompatibilityProfile" : {}
}
}
Memigrasikan project.json ke PackageReference
Migrasi antara project.json dan PackageReference sangat mudah.
Migrasi otomatis di Visual Studio 2026
Visual Studio 2026 dan yang lebih baru secara otomatis memigrasikan proyek project.json ke PackageReference saat Anda membuka solusi yang berisi proyek project.json. Migrasi terjadi pada waktu pemuatan solusi:
- Buka solusi yang berisi proyek project.json di Visual Studio 2026 atau yang lebih baru.
- Visual Studio secara otomatis mendeteksi file project.json dan memigrasikannya ke format PackageReference.
- Untuk memeriksa status migrasi, buka Jendela Output dan pilih Tampilkan output dari "Manajer Paket". Anda akan melihat pesan seperti "Memigrasikan proyek project.json..." diikuti oleh "Migrasi Berhasil" untuk setiap proyek. Kesalahan apa pun akan muncul di Daftar Kesalahan.
- Cadangan file proyek asli dan file project.json dibuat dalam
Backupfolder di akar direktori proyek. - Migrasi mengonversi semua dependensi paket ke format PackageReference dalam file proyek.
Migrasi manual di Visual Studio 2022
Untuk Visual Studio 2022 dan yang lebih lama, Anda dapat menggunakan migrasi bawaan:
- Muat proyek project.json di Visual Studio.
- Buka penjelajah solusi proyek project.json dan temukan simpul dependensi.
- Klik kanan dan pilih
Migrate project.json to PackageReference...
PackageReference
Metode migrasi alternatif
Atau, Anda dapat menggunakan alat baris perintah migrasi dotnet , atau melakukan migrasi secara manual dengan mengambil semua konten dari file project.json dan menggantinya dengan sintaks PackageReference yang setara.
Dependensi
Mencantumkan dependensi paket NuGet proyek Anda dalam formulir berikut:
"PackageID" : "version_constraint"
Misalnya:
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.0.10"
}
Bagian dependencies adalah tempat dialog Manajer Paket NuGet menambahkan dependensi paket ke proyek Anda.
Id Paket sesuai dengan id paket pada nuget.org , sama dengan id yang digunakan di konsol manajer paket: Install-Package Microsoft.NETCore.
Saat memulihkan paket, batasan versi "5.0.0" menyiratkan >= 5.0.0. Artinya, jika 5.0.0 tidak tersedia di server tetapi 5.0.1 adalah, NuGet menginstal 5.0.1 dan memperingatkan Anda tentang peningkatan. NuGet jika tidak memilih versi serendah mungkin pada server yang cocok dengan batasan.
Lihat resolusi dependensi untuk detail selengkapnya tentang aturan resolusi.
Mengelola aset dependensi
Aset mana dari dependensi yang mengalir ke proyek tingkat atas dikontrol dengan menentukan sekumpulan tag yang dibatasi koma di properti include dan exclude dari referensi dependensi. Tag dicantumkan tabel di bawah ini:
| Sertakan/Kecualikan tag | Folder yang terpengaruh dari target |
|---|---|
| contentFiles | Puas |
| Runtime | Runtime, Sumber Daya, dan FrameworkAssemblies |
| kompilasi | Lib |
| bangun | build (alat peraga dan target MSBuild) |
| pribumi | pribumi |
| tidak | Tidak ada folder |
| semua | Semua folder |
Tag yang ditentukan dengan exclude lebih diutamakan daripada yang ditentukan dengan include. Misalnya, include="runtime, compile" exclude="compile" sama dengan include="runtime".
Misalnya, untuk menyertakan folder dependensi build dan native, gunakan yang berikut ini:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"include": "build, native"
}
}
}
Untuk mengecualikan folder dependensi content dan build, gunakan yang berikut ini:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"exclude": "contentFiles, build"
}
}
}
Kerangka kerja
Mencantumkan kerangka kerja yang dijalankan proyek, seperti net45, netcoreapp, netstandard.
"frameworks": {
"netcore50": {}
}
Hanya satu entri yang diizinkan di bagian frameworks. (Pengecualian adalah file project.json untuk proyek ASP.NET yang dibangun dengan rantai alat DNX yang tidak digunakan lagi, yang memungkinkan beberapa target.)
Runtime
Mencantumkan sistem operasi dan arsitektur tempat aplikasi Anda berjalan, seperti win10-arm, win8-x64, win8-x86.
"runtimes": {
"win10-arm": { },
"win10-arm-aot": { },
"win10-x86": { },
"win10-x86-aot": { },
"win10-x64": { },
"win10-x64-aot": { }
}
Paket yang berisi PCL yang dapat berjalan pada runtime apa pun tidak perlu menentukan runtime. Ini juga harus benar dari dependensi apa pun, jika tidak, Anda harus menentukan runtime.
Mendukung
Menentukan serangkaian pemeriksaan untuk dependensi paket. Anda dapat menentukan di mana Anda mengharapkan PCL atau aplikasi berjalan. Definisi tidak ketat, karena kode Anda mungkin dapat berjalan di tempat lain. Tetapi menentukan pemeriksaan ini membuat NuGet memeriksa bahwa semua dependensi terpenuhi pada TxM yang tercantum. Contoh nilai untuk ini adalah: net46.app, uwp.10.0.app, dll.
Bagian ini harus diisi secara otomatis saat Anda memilih entri dalam dialog Target Pustaka Kelas Portabel.
"supports": {
"net46.app": {},
"uwp.10.0.app": {}
}
Impor
Impor dirancang untuk memungkinkan paket yang menggunakan dotnet TxM untuk beroperasi dengan paket yang tidak mendeklarasikan dotnet TxM. Jika proyek Anda menggunakan dotnet TxM maka semua paket yang Anda andalkan juga harus memiliki dotnet TxM, kecuali Anda menambahkan yang berikut ke project.json Anda untuk memungkinkan platform yang tidak dotnet kompatibel dengan dotnet:
"frameworks": {
"dotnet": { "imports" : "portable-net45+win81" }
}
Jika Anda menggunakan dotnet TxM, sistem proyek PCL menambahkan pernyataan imports yang sesuai berdasarkan target yang didukung.
Perbedaan dari aplikasi portabel dan proyek web
File project.json yang digunakan oleh NuGet adalah subset yang ditemukan dalam proyek ASP.NET Core. Dalam ASP.NET Core project.json digunakan untuk metadata proyek, informasi kompilasi, dan dependensi. Ketika digunakan dalam sistem proyek lain, ketiga hal tersebut dibagi menjadi file terpisah dan project.json berisi lebih sedikit informasi. Perbedaan penting meliputi:
Hanya ada satu kerangka kerja di bagian
frameworks.File tidak boleh berisi dependensi, opsi kompilasi, dll. yang Anda lihat dalam file
project.jsonDNX. Mengingat bahwa hanya ada satu kerangka kerja yang tidak masuk akal untuk memasukkan dependensi khusus kerangka kerja.Kompilasi ditangani oleh MSBuild sehingga opsi kompilasi, prapemroscesor mendefinisikan, dll. adalah bagian dari file proyek MSBuild dan tidak
project.json.
Di NuGet 3+, pengembang tidak diharapkan mengedit project.jsonsecara manual , karena UI Pengelola Paket di Visual Studio memanipulasi konten. Meskipun demikian, Anda pasti dapat mengedit file, tetapi Anda harus membangun proyek untuk memulai pemulihan paket atau memanggil pemulihan dengan cara lain. Lihat pemulihan Paket.
project.lock.json
File project.lock.json dihasilkan dalam proses pemulihan paket NuGet dalam proyek yang menggunakan project.json. Ini menyimpan rekam jepret dari semua informasi yang dihasilkan karena NuGet berjalan grafik paket dan menyertakan versi, konten, dan dependensi dari semua paket dalam proyek Anda. Sistem build menggunakan ini untuk memilih paket dari lokasi global yang relevan saat membangun proyek alih-alih bergantung pada folder paket lokal dalam proyek itu sendiri. Ini menghasilkan performa build yang lebih cepat karena perlu membaca hanya project.lock.json alih-alih banyak file .nuspec terpisah.
project.lock.json dibuat secara otomatis pada pemulihan paket, sehingga dapat dihilangkan dari kontrol sumber dengan menambahkannya ke file .gitignore dan .tfignore (lihat Paket dan kontrol sumber. Namun, jika Anda menyertakannya dalam kontrol sumber, riwayat perubahan menunjukkan perubahan dalam dependensi yang diselesaikan dari waktu ke waktu.