İngilizce dilinde oku

Aracılığıyla paylaş


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

Bağımlılıklar

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ık varlıklarını yönetme

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

Çerçeveler

Projenin üzerinde çalıştığı , , netstandardgibi net45netcoreappç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.)

Çalıştırma

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.

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

İçeri aktarmalar

İç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 dotnetuyumlu 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.

Taşınabilir uygulamalar ve web projelerinden farklar

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.jsonbeklenmemektedir. 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ı, kullanan project.jsonprojelerde 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.