project.json başvurusu
Önemli
Bu içerik kullanım dışı bırakıldı. Projeler veya PackageReference biçimlerini kullanmalıdır packages.config
.
NuGet 3.x+
Dosya, project.json
paket yönetimi biçimi olarak bilinen bir projede kullanılan paketlerin listesini tutar. Bunun yerini packages.config
alır, ancak sırasıyla PackageReference tarafından NuGet 4.0+ ile değiştirilir.
project.lock.json
dosyası (aşağıda açıklanmıştır) kullanan project.json
projelerde de kullanılır.
project.json
aşağıdaki temel yapıya sahiptir; burada dört üst düzey nesnenin her biri herhangi bir sayıda alt nesneye sahip olabilir:
{
"dependencies": {
"PackageID" : "{version_constraint}"
},
"frameworks" : {
"TxM" : {}
},
"runtimes" : {
"RID": {}
},
"supports" : {
"CompatibilityProfile" : {}
}
}
Projenizin NuGet paket bağımlılıklarını aşağıdaki biçimde listeler:
"PackageID" : "version_constraint"
Örneğin:
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.0.10"
}
Bölümdependencies
, NuGet Paket Yöneticisi iletişim kutusunun projenize paket bağımlılıkları eklediği bölümdür.
Paket kimliği, paket yöneticisi konsolunda kullanılan kimlikle aynı nuget.org üzerindeki paketin kimliğine karşılık gelir: Install-Package Microsoft.NETCore
.
Paketleri geri yüklerken sürümü kısıtlaması "5.0.0"
anlamına gelir >= 5.0.0
. Yani, sunucuda 5.0.0 yoksa ancak 5.0.1 mevcutsa, NuGet 5.0.1'i yükler ve yükseltme hakkında sizi uyarır. NuGet aksi takdirde sunucuda kısıtlamayla eşleşen en düşük olası sürümü seçer.
Çözüm kuralları hakkında daha fazla bilgi için bkz . Bağımlılık çözümlemesi.
Bağımlılıklardan en üst düzey projeye akan varlıklar, bağımlılık başvurusunun ve exclude
özelliklerinde include
virgülle ayrılmış bir etiket kümesi belirtilerek denetlenmektedir. Etiketler aşağıdaki tabloda listelenmiştir:
Etiketi dahil et/hariç tut | Hedefin etkilenen klasörleri |
---|---|
contentFiles | Content |
çalışma zamanı | Çalışma Zamanı, Kaynaklar ve FrameworkAssemblies |
derle | Lib |
derleme | build (MSBuild props ve targets) |
yerel | yerel |
yok | Klasör yok |
tümü | Tüm klasörler |
ile belirtilen etiketler ile exclude
include
belirtilenlerden önceliklidir. Örneğin include="runtime, compile" exclude="compile"
ile include="runtime"
aynıdır.
Örneğin, bir bağımlılığın build
ve native
klasörlerini eklemek için aşağıdakileri kullanın:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"include": "build, native"
}
}
}
Bir bağımlılığın content
ve build
klasörlerini dışlamak için aşağıdakileri kullanın:
{
"dependencies": {
"packageA": {
"version": "1.0.0",
"exclude": "contentFiles, build"
}
}
}
Projenin üzerinde çalıştığı , , netstandard
gibi net45
netcoreapp
çerçeveleri listeler.
"frameworks": {
"netcore50": {}
}
Bölümünde yalnızca tek bir girişe frameworks
izin verilir. (Özel durum, project.json
birden çok hedefe izin veren kullanım dışı DNX araç zinciriyle derlenen ASP.NET projelerin dosyalarıdır.)
Uygulamanızın üzerinde çalıştığı işletim sistemlerini ve mimarileri listeler; örneğinwin10-arm
, , win8-x64
. win8-x86
"runtimes": {
"win10-arm": { },
"win10-arm-aot": { },
"win10-x86": { },
"win10-x86-aot": { },
"win10-x64": { },
"win10-x64-aot": { }
}
Herhangi bir çalışma zamanında çalışabilen bir PCL içeren paketin çalışma zamanı belirtmesi gerekmez. Bu durum tüm bağımlılıklar için de geçerli olmalıdır, aksi takdirde çalışma zamanlarını belirtmeniz gerekir.
Paket bağımlılıkları için bir dizi denetim tanımlar. PCL veya uygulamanın nerede çalışmasını beklediğinizi tanımlayabilirsiniz. Kodunuz başka bir yerde çalıştırabildiğinden tanımlar kısıtlayıcı değildir. Ancak bu denetimlerin belirtilmesi, NuGet'in listelenen TxM'lerde tüm bağımlılıkların karşılandığından emin olmasını sağlar. Bunun için değerlere örnek olarak şunlar verilebilir: net46.app
, uwp.10.0.app
, vb.
Taşınabilir Sınıf Kitaplığı hedefleri iletişim kutusunda bir girdi seçtiğinizde bu bölüm otomatik olarak doldurulmalıdır.
"supports": {
"net46.app": {},
"uwp.10.0.app": {}
}
İçeri aktarmalar, TxM kullanan paketlerin dotnet
dotnet TxM bildirmeyen paketlerle çalışmasına izin verecek şekilde tasarlanmıştır. Projeniz TxM kullanıyorsadotnet
, platform olmayanların dotnet
ile dotnet
uyumlu olmasına izin vermek için aşağıdakini eklemediğiniz sürece, bağımlı olduğunuz tüm paketlerin project.json
de bir dotnet
TxM'ye sahip olması gerekir:
"frameworks": {
"dotnet": { "imports" : "portable-net45+win81" }
}
TxM kullanıyorsanız dotnet
, PCL proje sistemi desteklenen hedeflere göre uygun imports
deyimi ekler.
project.json
NuGet tarafından kullanılan dosya, ASP.NET Core projelerinde bulunan bir alt kümesidir. ASP.NET Core'da project.json
proje meta verileri, derleme bilgileri ve bağımlılıklar için kullanılır. Diğer proje sistemlerinde kullanıldığında, bu üç şey ayrı dosyalara ayrılır ve project.json
daha az bilgi içerir. Önemli farklar şunlardır:
bölümünde yalnızca bir çerçeve
frameworks
olabilir.Dosya, DNX
project.json
dosyalarında gördüğünüz bağımlılıkları, derleme seçeneklerini vb. içeremez. Yalnızca tek bir çerçeve olabileceği düşünüldüğünde, çerçeveye özgü bağımlılıkları girmek mantıklı değildir.Derleme MSBuild tarafından işlenir, bu nedenle derleme seçenekleri, önişlemci tanımları vb. hepsi MSBuild proje dosyasının parçası olur ve değildir
project.json
.
Visual Studio'daki Paket Yöneticisi kullanıcı arabirimi içeriği işlediğinden, NuGet 3+ uygulamasında geliştiricilerin uygulamasını el ile düzenlemesi project.json
beklenmemektedir. Bununla birlikte, dosyayı kesinlikle düzenleyebilirsiniz, ancak bir paket geri yükleme başlatmak veya geri yüklemeyi başka bir şekilde çağırmak için projeyi oluşturmanız gerekir. Bkz. Paket geri yükleme.
project.lock.json
dosyası, kullanan project.json
projelerde NuGet paketlerini geri yükleme işleminde oluşturulur. NuGet paketlerin grafiğinde ilerledikçe oluşturulan tüm bilgilerin anlık görüntüsünü tutar ve projenizdeki tüm paketlerin sürümünü, içeriğini ve bağımlılıklarını içerir. Derleme sistemi, projenin kendisindeki yerel paketler klasörüne bağlı olarak değil, projeyi oluştururken uygun olan genel bir konumdan paketleri seçmek için bunu kullanır. Bu, çok sayıda ayrı .nuspec
dosya yerine salt project.lock.json
okunur olması gerektiğinden daha hızlı derleme performansına neden olur.
project.lock.json
paket geri yüklemede otomatik olarak oluşturulur, bu nedenle ve dosyalarına .gitignore
.tfignore
eklenerek kaynak denetiminden atlanabilir (bkz . Paketler ve kaynak denetimi. Bununla birlikte, kaynak denetimine eklerseniz, değişiklik geçmişi zaman içinde çözülen bağımlılıklardaki değişiklikleri gösterir.