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 :
xana sürümdür.y, ikincil sürümdür.z, özellik bantdır.nnDü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ğerdirrollForwardlatestMajor). Ön sürüm SDK sürümlerinin kabul edilip edilmediği, nasıldotnetç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ğerdirrollForwardlatestMajor). 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;falseyalnı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
rollForwardherhangi bir değer ayarlanmasa,latestPatchvarsayılan ilke olarakrollForwardkullanı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?
allowPrereleaseallowPrerelease bölümünde açıklanmıştır.
- Ayar
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 efSDK'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 fazladotnet efbilgi için bkz. EF Core .NET Komut Satırı Araçları.