global.json’a genel bakış

Bu makale şu şekilde geçerlidir: ✔️ .net Core 2,0 SDK ve sonraki sürümleri

Global. JSON dosyası, .net CLI komutlarını çalıştırdığınızda HANGI .NET SDK sürümünün kullanıldığını tanımlamanızı sağlar. .NET SDK 'sının seçilmesi, projenizin hedeflediği çalışma zamanını belirtmekten bağımsızdır. .NET SDK sürümü, .NET CLı 'nın hangi sürümlerinin kullanıldığını belirtir.

Genel olarak, SDK araçlarının en son sürümünü kullanmak istiyorsunuz, bu nedenle Global. JSON dosyası gerekli değildir. Bazı Gelişmiş senaryolarda, SDK araçlarının sürümünü denetlemek isteyebilirsiniz ve bu makalede bunun nasıl yapılacağı açıklanır.

Bunun yerine çalışma zamanının belirtilmesi hakkında daha fazla bilgi için bkz. hedef çerçeveler.

.NET SDK, geçerli çalışma dizininde (proje diziniyle aynı olmayan) veya üst dizinlerinden biri olan Global. JSON dosyasını arar.

Global. JSON şeması

sdk

Türüyle object

Seçilecek .NET SDK bilgilerini belirtir.

sürüm

  • Türüyle string

  • Şu tarihten itibaren kullanılabilir: .NET Core 1,0 SDK.

Kullanılacak .NET SDK sürümü.

Bu alan:

  • Joker karakter desteği yoktur, yani tam sürüm numarası belirtilmelidir.
  • Sürüm aralıklarını desteklemez.

Allowönsürümü

  • Türüyle boolean

  • Şu tarihten itibaren kullanılabilir: .NET Core 3,0 SDK.

SDK Çözümleyicisinin kullanılacak SDK sürümünü seçerken yayın öncesi sürümlerini düşünmesinin gerekip gerekmediğini belirtir.

Bu değeri açıkça ayarlamazsanız, varsayılan değer Visual Studio ' den çalıştırıp çalıştırdığınıza bağlıdır:

  • Visual Studio değilseniz, varsayılan değer olur true .
  • Visual Studio kullanıyorsanız, istenen ön sürüm durumunu kullanır. diğer bir deyişle, Visual Studio önizleme sürümünü kullanıyorsanız veya .NET Core SDK seçeneğinin ( araçlar > seçenekler > ortamı > önizleme özellikleri altında) kullanım önizlemelerini ayarlarsanız, varsayılan değer olur true ; aksi takdirde, false .

Ileri alınmaya

  • Türüyle string

  • Şu tarihten itibaren kullanılabilir: .NET Core 3,0 SDK.

Bir SDK sürümü seçerken kullanılacak geri alma ilkesi, belirli bir SDK sürümü eksik olduğunda geri dönüş olarak veya daha yüksek bir sürümü kullanmak için bir yönerge olarak. Bir Sürüm rollForward , olarak ayarlamadıkça bir değer ile belirtilmelidir latestMajor . Varsayılan ileri alma davranışı, eşleşen kurallaragöre belirlenir.

Kullanılabilir ilkeleri ve bunların davranışlarını anlamak için şu biçimdeki SDK sürümü için aşağıdaki tanımları göz önünde bulundurun x.y.znn :

  • x ana sürümdür.
  • y , ikincil sürümdür.
  • z , özellik bantdır.
  • nn Düzeltme Eki sürümüdür.

Aşağıdaki tabloda anahtar için olası değerler gösterilmektedir rollForward :

Değer Davranış
patch Belirtilen sürümü kullanır.
Bulunamazsa, en son düzeltme eki düzeyine doğru kaydeder.
Bulunamazsa, başarısız olur.

Bu değer, SDK 'nın önceki sürümlerindeki eski davranıştır.
feature Belirtilen ana, ikincil ve özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, aynı birincil/ikincil içindeki bir sonraki yüksek Özellik bandına doğru kaydolur ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
minor Belirtilen ana, ikincil ve özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, aynı birincil/alt sürüm içindeki bir sonraki daha yüksek Özellik bandına kaydolur ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, aynı ana sırada bir sonraki yüksek ve daha düşük Özellik bandına doğru kaydolur ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
major Belirtilen ana, ikincil ve özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, aynı birincil/alt sürüm içindeki bir sonraki daha yüksek Özellik bandına kaydolur ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, aynı ana sırada bir sonraki yüksek ve daha düşük Özellik bandına doğru kaydolur ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, daha yüksek büyük, küçük ve özellik bandına ileri doğru kaydeder ve bu özellik bandı için en son düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
latestPatch , İstenen ana, alt ve özellik bandı ile bir düzeltme eki düzeyi ve belirtilen değerden daha büyük veya eşit olan en son yüklenen düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
latestFeature , Belirtilen değerden daha büyük veya eşit olan bir özellik bandı ve düzeltme eki düzeyiyle istenen büyük ve küçük ile eşleşen en yüksek yüklü Özellik bandı ve düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
latestMinor , Belirtilen değerden daha büyük veya eşit olan bir ikincil, özellik bandı ve yama düzeyiyle istenen ana, özellik bandı ve düzeltme eki düzeyini kullanır.
Bulunamazsa, başarısız olur.
latestMajor , Belirtilen değerden daha büyük veya eşit bir sürüme sahip en yüksek yüklü .NET SDK 'sını kullanır.
Bulunamazsa başarısız olur.
disable İleri doğru değil. Tam eşleşme gereklidir.

MSBuild-SDK 'lar

Türüyle object

Proje SDK sürümünü her bir proje yerine tek bir yerde denetlemenize olanak tanır. Daha fazla bilgi için bkz. Proje SDK 'Ları nasıl çözümlenir.

Örnekler

Aşağıdaki örnek, ön sürüm sürümlerinin nasıl kullanılacağını gösterir:

{
  "sdk": {
    "allowPrerelease": false
  }
}

Aşağıdaki örnek, belirtilen sürümden daha büyük veya eşit olan en yüksek sürümü nasıl kullanacağınızı gösterir. Gösterilen JSON, 2.2.200 ' den önceki SDK sürümlerine izin vermez ve 3.0.xxx ve 3.1.xxx dahil olmak üzere 2.2.200 veya sonraki bir sürüme izin verir.

{
  "sdk": {
    "version": "2.2.200",
    "rollForward": "latestMajor"
  }
}

Aşağıdaki örnek, belirtilen sürümün tam olarak nasıl kullanılacağını göstermektedir:

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "disable"
  }
}

Aşağıdaki örnek, belirli bir büyük ve küçük sürümünün yüklü olduğu en son özellik bandı ve düzeltme eki sürümünü nasıl kullanacağınızı gösterir. Gösterilen JSON, 3.1.102 ' den önceki SDK sürümlerine izin vermez ve 3.1.102 ya da 3.1.103 veya 3.1.200 gibi daha sonraki 3.1.xxx sürümlerini sağlar.

{
  "sdk": {
    "version": "3.1.102",
    "rollForward": "latestFeature"
  }
}

Aşağıdaki örnek, belirli bir sürümün yüklü olduğu en yüksek düzeltme eki sürümünü nasıl kullanacağınızı gösterir. Gösterilen JSON, 3.1.102 ' den önceki SDK sürümlerine izin vermez ve 3.1.102 ya da 3.1.103 veya 3.1.199 gibi sonraki 3.1.1 xx sürümüne izin verir.

{
  "sdk": {
    "version": "3.1.102",
    "rollForward": "latestPatch"
  }
}

Global. JSON ve .NET CLı

Global. JSON dosyasında bir tane ayarlamak için MAKINENIZDE hangi SDK sürümlerinin yüklü olduğunu bilmemiz yararlı olur. Bunun nasıl yapılacağı hakkında daha fazla bilgi için bkz. .net 'in zaten yüklü olduğunu denetleme.

Makinenize ek .NET SDK sürümleri yüklemek için indirme .net sayfasını ziyaret edin.

Aşağıdaki örneğe benzer şekilde, DotNet New komutunu yürüterek geçerli dizinde yeni bir Global. JSON dosyası oluşturabilirsiniz:

dotnet new globaljson --sdk-version 3.0.100

Eşleşen kurallar

Not

Eşleşen kurallar dotnet.exe , tüm yüklü .net yüklü çalışma zamanları genelinde ortak olan giriş noktasına tabidir. .NET çalışma zamanının en son yüklü sürümü için eşleşen kurallar, yan yana birden fazla çalışma zamanı yüklediğinizde veya bir Global. JSON dosyası kullanıyorsanız kullanılır.

.NET Core 3,0 ile başlayarak, hangi SDK sürümünün kullanılacağını belirlerken aşağıdaki kurallar geçerlidir:

  • Global. JSON dosyası bulunamazsa veya Global. JSON bir SDK sürümü ya da bir değer belirtmezse allowPrerelease , en yüksek yüklü SDK sürümü kullanılır (ayarına eşdeğerdir rollForward latestMajor ). Ön sürüm SDK sürümlerinin kabul edilip edilmediği, nasıl dotnet çağrıldığına bağlıdır.

    • Visual Studio değilseniz , ön sürüm sürümleri göz önünde bulundurulmaz.
    • Visual Studio kullanıyorsanız, istenen ön sürüm durumunu kullanır. diğer bir deyişle, Visual Studio önizleme sürümünü kullanıyorsanız veya .NET Core SDK seçeneğinin ( araçlar > seçenekler > ortamı > önizleme özellikleri altında) kullanım önizlemelerini ayarlarsanız, ön sürüm sürümlerinin kabul edilmesi gerekir; aksi takdirde yalnızca yayın sürümleri kabul edilir.
  • Bir SDK sürümü belirtmeyen ancak bir değer belirttiğinde bir Global. JSON dosyası bulunursa allowPrerelease , en yüksek yüklü SDK sürümü kullanılır (ayarına eşdeğerdir rollForward latestMajor ). En son SDK sürümünün yayınlanıp yayınlanamayacağını veya ön sürümün değerine bağlı olup olmadığı allowPrerelease . true , ön sürüm sürümlerinin dikkate alınarak değerlendirileceklerini gösterir; false yalnızca sürüm sürümlerinin dikkate alın olduğunu gösterir.

  • Global.json dosyası bulunursa ve sdk sürümünü belirtirse:

    • Ayar rollForward herhangi bir değer ayarlanmasa, latestPatch varsayılan ilke olarak rollForward kullanır. Aksi takdirde rollForward bölümünde her değeri ve bunların davranışını kontrol edin.
    • Ön sürüm sürümlerinin dikkate alınıp alınmayacakları ve ayarsız olduğunda varsayılan davranış nedir? allowPrerelease allowPrerelease bölümünde açıklanmıştır.

Derleme uyarılarını giderme

  • Aşağıdaki uyarı, projenizin ön sürüm sürümü kullanılarak derlenmiş olduğunu .NET Core SDK:

    .NET Core SDK'nin önizleme sürümüyle .NET Core SDK. SDK sürümünü geçerli projede global.json dosyası aracılığıyla tanımlayabilirsiniz. Daha fazla bilgi için: https://go.microsoft.com/fwlink/?linkid=869452 .

    .NET Core SDK sürümlerin geçmişi ve yüksek kaliteli olma taahhüdü vardır. Ancak, bir ön sürüm kullanmak istemiyorsanız allowPrerelease bölümündeki .NET Core 3.0 SDK veya sonraki bir sürümü ile kullanabileceğiniz farklı stratejileri kontrol edin. Daha önce hiç .NET Core 3.0 veya daha yüksek bir Çalışma Zamanı veya SDK yüklü olan makineler için, global.json dosyası oluşturmanız ve kullanmak istediğiniz tam sürümü belirtmeniz gerekir.

  • Aşağıdaki uyarı, projenizin .NET Core 2.1 SDK ve sonraki sürümleriyle uyumlu olmayan EF Core 1.0 veya 1.1 sürümünü hedefle olduğunu gösterir:

    '{startupProject}' başlangıç projesi '. '{targetFrameworkVersion}' NETCoreApp sürümü. Entity Framework Core .NET Komut Satırı Araçları'nın bu sürümü yalnızca 2.0 veya daha yeni bir sürümü destekler. Araçların eski sürümlerini kullanma hakkında bilgi için bkz. https://go.microsoft.com/fwlink/?linkid=871254 .

    .NET Core 2.1 SDK'sı (sürüm 2.1.300) ile başlayarak, komut dotnet ef SDK'ya dahil edilir. Projenizi derlemek için makinenize .NET Core 2.0 SDK (sürüm 2.1.201) veya önceki bir sürümünü yükleyin ve global.json dosyasını kullanarak istenen SDK sürümünü tanımlayın. komutu hakkında daha fazla dotnet ef bilgi için bkz. EF Core .NET Komut Satırı Araçları.

Ayrıca bkz.