Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Bu içerik kullanım dışı bırakıldı. Projeler PackageReference biçimlerini kullanmalıdır. project.json projenizi PackageReference 'e geçirmeyiöğrenin.
NuGet 3.x
project.json
dosyası, paket yönetimi biçimi olarak bilinen bir projede kullanılan paketlerin listesini tutar.
packages.config
yerini alır, ancak sırasıyla PackageReference NuGet 4.0+ ile değiştirilir.
project.lock.json
dosyası (aşağıda açıklanmıştır) project.json
kullanan projelerde de kullanılır.
project.json
, dört üst düzey nesnenin her birinin herhangi bir sayıda alt nesneye sahip olabileceği aşağıdaki temel yapıya sahiptir:
{
"dependencies": {
"PackageID" : "{version_constraint}"
},
"frameworks" : {
"TxM" : {}
},
"runtimes" : {
"RID": {}
},
"supports" : {
"CompatibilityProfile" : {}
}
}
project.json PackageReference'a geçirme
project.json ile PackageReference arasındaki geçiş basittir. En son Visual Studio 2022 Güncelleştirme 14'te yerleşik geçiş aracını kullanmak için bunu yapmanın en kolay yolu.
- Visual Studio'da project.json projesini yükleyin.
- project.json projesinin çözüm gezginine gidin ve bağımlılıklar düğümünü bulun.
-
Migrate project.json to PackageReference...
! seçeneğine tıklayın.
'a Geçiş
Alternatif olarak, dotnet geçişikullanabilir veya project.json dosyasındaki tüm içeriği alıp eşdeğerPackageReference söz dizimi ile değiştirerek geçişi el ile yapabilirsiniz.
Bağımlılık
Projenizin NuGet paket bağımlılıklarını aşağıdaki biçimde listeler:
"PackageID" : "version_constraint"
Mesela:
"dependencies": {
"Microsoft.NETCore": "5.0.0",
"System.Runtime.Serialization.Primitives": "4.0.10"
}
dependencies
bölümü, NuGet Paket Yöneticisi iletişim kutusunun projenize paket bağımlılıkları eklediği bölümdür.
Paket kimliği, nuget.org üzerindeki paketin kimliğine karşılık gelir ve paket yöneticisi konsolunda kullanılan kimlikle aynıdır: Install-Package Microsoft.NETCore
.
Paketler geri yüklenirken, "5.0.0"
sürüm kısıtlaması >= 5.0.0
anlamına gelir. 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ık varlıklarını yönetme
Bağımlılıklardan en üst düzey projeye akan varlıklar, bağımlılık başvurusunun include
ve exclude
özelliklerinde 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 | İçerik |
Çalışma zamanı | Çalışma Zamanı, Kaynaklar ve FrameworkAssemblies |
derlemek | Lib |
yapmak | build (MSBuild props ve targets) |
yerli | yerli |
hiç kimse | Klasör yok |
tüm | Tüm klasörler |
exclude
ile belirtilen etiketler, include
ile belirtilenlerden önceliklidir. Örneğin, include="runtime, compile" exclude="compile"
include="runtime"
ile 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"
}
}
}
Çerçeve
projenin üzerinde çalıştığı net45
, netcoreapp
netstandard
gibi çerçeveleri listeler.
"frameworks": {
"netcore50": {}
}
frameworks
bölümünde yalnızca tek bir girişe izin verilir. (Özel durum, birden çok hedefe izin veren kullanım dışı DNX araç zinciriyle derlenen ASP.NET projelerin dosyaları project.json
.)
Çalışma Zamanları
uygulamanızın üzerinde çalıştığı win10-arm
, win8-x64
win8-x86
gibi işletim sistemlerini ve mimarileri listeler.
"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.
Destekle -yen
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": {}
}
Ithalat
İçeri aktarmalar, dotnet
TxM kullanan paketlerin dotnet TxM bildirmeyen paketlerle çalışmasına izin verecek şekilde tasarlanmıştır. Projeniz dotnet
TxM kullanıyorsa, dotnet
olmayan platformların dotnet
uyumlu olmasına izin vermek için project.json
aşağıdakini eklemediğiniz sürece, bağımlı olduğunuz tüm paketlerin de dotnet
bir TxM'ye sahip olması gerekir:
"frameworks": {
"dotnet": { "imports" : "portable-net45+win81" }
}
dotnet
TxM kullanıyorsanız, PCL proje sistemi desteklenen hedeflere göre uygun imports
deyimini ekler.
Taşınabilir uygulamalar ve web projelerinden farklar
NuGet tarafından kullanılan project.json
dosyası, ASP.NET Core projelerinde bulunan bir alt kümesidir. ASP.NET Core 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:
frameworks
bölümünde yalnızca bir çerçeve 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 bir parçasıdır ve
project.json
değildir.
Visual Studio'daki Paket Yöneticisi kullanıcı arabirimi içeriği işlediğinden, NuGet 3+ uygulamasında geliştiricilerin project.json
el ile düzenlemesi 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
project.lock.json
dosyası, project.json
kullanan 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
dosyası yerine yalnızca project.lock.json
okunması gerektiğinden daha hızlı derleme performansına neden olur.
project.lock.json
paket geri yüklemesinde otomatik olarak oluşturulur, bu nedenle .gitignore
ve .tfignore
dosyalarına 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.