Baca dalam bahasa Inggris

Bagikan melalui


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" : {}
    }
}

Dependensi

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.

Mengelola aset dependensi

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"
    }
  }
}

Kerangka kerja

Mencantumkan kerangka kerja yang dijalankan proyek, seperti net45, , netcoreappnetstandard.

"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.)

Runtimes

Mencantumkan sistem operasi dan arsitektur tempat aplikasi Anda berjalan, seperti win10-arm, , win8-x64win8-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.appdll.

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 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.

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 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.

project.lock.json

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.