referensi project.json
Penting
Isi ini tidak digunakan lagi. Proyek harus menggunakan packages.config
format atau PackageReference.
NuGet 3.x+
File mempertahankan project.json
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" : {}
}
}
Mencantumkan dependensi paket NuGet proyek Anda dalam formulir berikut:
"PackageID" : "version_constraint"
Contohnya:
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.0.10"
}
Bagian dependencies
ini adalah tempat dialog NuGet Package Manager 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 "5.0.0"
versi 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.
Aset mana dari dependensi yang mengalir ke proyek tingkat atas dikontrol dengan menentukan sekumpulan tag yang dibatasi koma di include
properti dan exclude
referensi dependensi. Tag dicantumkan tabel di bawah ini:
Sertakan/Kecualikan tag | Folder yang terpengaruh dari target |
---|---|
contentFiles | Konten |
runtime | Runtime, Sumber Daya, dan FrameworkAssemblies |
bangun | Lib |
build | build (alat peraga dan target MSBuild) |
native | native |
tidak ada | Tidak ada folder |
all | Semua folder |
Tag yang ditentukan dengan exclude
diutamakan daripada yang ditentukan dengan include
. Misalnya, include="runtime, compile" exclude="compile"
sama dengan include="runtime"
.
Misalnya, untuk menyertakan build
folder dan native
dependensi, gunakan yang berikut ini:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"include": "build, native"
}
}
}
Untuk mengecualikan content
folder dan build
dependensi, gunakan yang berikut ini:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"exclude": "contentFiles, build"
}
}
}
Mencantumkan kerangka kerja yang dijalankan proyek, seperti net45
, , netcoreapp
netstandard
.
"frameworks": {
"netcore50": {}
}
Hanya satu entri yang diizinkan di bagian .frameworks
(Pengecualian adalah project.json
file untuk proyek ASP.NET yang dibangun dengan rantai alat DNX yang tidak digunakan lagi, yang memungkinkan beberapa target.)
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.
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 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 Anda project.json
untuk memungkinkan non dotnet
platform kompatibel dengan dotnet
:
"frameworks": {
"dotnet": { "imports" : "portable-net45+win81" }
}
Jika Anda menggunakan dotnet
TxM, sistem proyek PCL menambahkan pernyataan yang sesuai imports
berdasarkan target yang didukung.
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 tersebut
frameworks
.File tidak boleh berisi dependensi, opsi kompilasi, dll. yang Anda lihat dalam file DNX
project.json
. Mengingat bahwa hanya ada satu kerangka kerja yang tidak masuk akal untuk memasukkan dependensi khusus kerangka kerja.Kompilasi ditangani oleh MSBuild sehingga opsi kompilasi, preproscessor mendefinisikan, dll. adalah bagian dari file proyek MSBuild dan bukan
project.json
.
Di NuGet 3+, pengembang tidak diharapkan untuk mengedit project.json
, secara manual karena UI Manajer 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.
File project.lock.json
dihasilkan dalam proses memulihkan 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 saja project.lock.json
alih-alih banyak file terpisah .nuspec
.
project.lock.json
dibuat secara otomatis pada pemulihan paket, sehingga dapat dihilangkan dari kontrol sumber dengan menambahkannya ke .gitignore
file 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.