Kullanılacak .NET sürümünü seçin
Bu makalede sürümleri seçmek için .NET araçları, SDK ve çalışma zamanı tarafından kullanılan ilkeler açıklanmaktadır. Bu ilkeler, belirtilen sürümleri kullanan uygulamaları çalıştırma ile hem geliştirici hem de son kullanıcı makinelerini yükseltme kolaylığı sağlayan bir denge sağlar. Bu ilkeler şunları etkinleştirir:
- Güvenlik ve güvenilirlik güncelleştirmeleri de dahil olmak üzere .NET'in kolay ve verimli dağıtımı.
- Hedef çalışma zamanından bağımsız olarak en son araçları ve komutları kullanın.
Sürüm seçimi gerçekleşir:
- BIR SDK komutu çalıştırdığınızda, SDK en son yüklü sürümü kullanır.
- Derleme oluşturduğunuzda, hedef çerçeve takma adlar derleme zamanı API'lerini tanımlar.
- Bir .NET uygulaması çalıştırdığınızda, çerçeveye bağımlı uygulamaları ileriye doğru hedefleyin.
- Bağımsız bir uygulama yayımladığınızda, bağımsız dağıtımlar seçili çalışma zamanını içerir.
Bu belgenin geri kalanında bu dört senaryo incelenir.
SDK en son yüklü sürümü kullanır
SDK komutları ve dotnet run
içerirdotnet new
. .NET CLI her dotnet
komut için bir SDK sürümü seçmelidir. Aşağıdakiler olsa bile makinede varsayılan olarak yüklü olan en son SDK'yı kullanır:
- Proje, .NET çalışma zamanının önceki bir sürümünü hedefler.
- .NET SDK'sının en son sürümü bir önizleme sürümüdür.
Önceki .NET çalışma zamanı sürümlerini hedeflerken en son SDK özelliklerinden ve geliştirmelerinden yararlanabilirsiniz. Aynı SDK araçlarını kullanarak .NET'in farklı çalışma zamanı sürümlerini hedefleyebilirsiniz.
Nadir durumlarda SDK'nın önceki bir sürümünü kullanmanız gerekebilir. Bu sürümü bir global.json dosyasında belirtirsiniz. "En son kullan" ilkesi, yalnızca en son yüklenen sürümden önceki bir .NET SDK sürümünü belirtmek için global.json kullandığınız anlamına gelir.
global.json dosya hiyerarşisinde herhangi bir yere yerleştirilebilir. Belirli bir global.json hangi projeler için geçerli olduğunu dosya sistemindeki yerine göre denetlersiniz. .NET CLI, geçerli çalışma dizininden (proje diziniyle aynı olması gerekmeyebilir) yukarı doğru ilerleyen bir global.json dosyasını yinelemeli olarak arar. Bulunan ilk global.json dosyası kullanılan sürümü belirtir. Bu SDK sürümü yüklüyse, bu sürüm kullanılır. global.json belirtilen SDK bulunamazsa, .NET CLI uyumlu bir SDK seçmek için eşleşen kuralları kullanır veya hiçbir sdk bulunmazsa başarısız olur.
Aşağıdaki örnekte global.json söz dizimi gösterilmektedir:
{
"sdk": {
"version": "5.0.0"
}
}
SDK sürümünü seçme işlemi şu şekildedir:
dotnet
geçerli çalışma dizininden yukarı doğru ilerleyen bir global.json dosyasını yinelemeli olarak ters olarak arar.dotnet
bulunan ilk global.json belirtilen SDK'yi kullanır.dotnet
global.json bulunamazsa en son yüklü SDK'sını kullanır.
SDK sürümü seçimi hakkında daha fazla bilgi için global.json genel bakış makalesinin Eşleştirme kuralları ve rollForward bölümlerine bakın.
Derleme zamanı API'lerini tanımlayan hedef çerçeve takma adları
Projenizi bir hedef çerçeve takma adı (TFM) içinde tanımlanan API'lere göre oluşturursunuz. Proje dosyasında hedef çerçeveyi belirtirsiniz. TargetFramework
Proje dosyanızdaki öğesini aşağıdaki örnekte gösterildiği gibi ayarlayın:
<TargetFramework>net8.0</TargetFramework>
Projenizi birden çok TFM'ye göre oluşturabilirsiniz. Birden çok hedef çerçevenin ayarlanması kitaplıklar için daha yaygındır, ancak uygulamalarla da yapılabilir. Bir TargetFrameworks
özellik belirtirsiniz (çoğul olarak TargetFramework
). Hedef çerçeveler, aşağıdaki örnekte gösterildiği gibi noktalı virgülle ayrılmıştır:
<TargetFrameworks>net8.0;net47</TargetFrameworks>
Belirli bir SDK, birlikte verildiği çalışma zamanının hedef çerçevesine eşlenmiş sabit bir çerçeve kümesini destekler. Örneğin, .NET 8 SDK'sı hedef çerçevenin bir uygulaması net8.0
olan .NET 8 çalışma zamanını içerir. .NET 8 SDK'sı , ve 'yi destekler, ancak (veya üzerini) desteklemez net7.0
net9.0
.net5.0
net6.0
için derlenecek net9.0
.NET 9 SDK'sını yüklersiniz.
.NET Standard
.NET Standard, farklı .NET uygulamaları tarafından paylaşılan bir API yüzeyini hedeflemenin bir yoluydu. API standardı olan .NET 5'in yayımlanmasından başlayarak, .NET Standard'ın tek bir senaryo dışında çok az ilgisi vardır: .NET Standard, hem .NET hem de .NET Framework'i hedeflemek istediğinizde kullanışlıdır. .NET 5 tüm .NET Standard sürümlerini uygular.
Daha fazla bilgi için bkz . .NET 5 ve .NET Standard.
Çerçeveye bağımlı uygulamalar ileri sarma
ile kaynaktan veya ile dotnet run
çerçeveye bağımlı bir dağıtımdan veya ile myapp.exe
dotnet myapp.dll
çerçeveye bağımlı bir yürütülebilir dosyadan bir uygulama çalıştırdığınızda dotnet
yürütülebilir dosya, uygulamanın konağıdır.
Konak, makinede yüklü olan en son düzeltme eki sürümünü seçer. Örneğin, proje dosyanızda belirttiyseniz net5.0
ve 5.0.2
en son .NET çalışma zamanı yüklüyse, 5.0.2
çalışma zamanı kullanılır.
Kabul edilebilir 5.0.*
bir sürüm bulunmazsa yeni 5.*
bir sürüm kullanılır. Örneğin, belirttiyseniz net5.0
ve yalnızca 5.1.0
yüklüyse, uygulama çalışma zamanını kullanarak 5.1.0
çalışır. Bu davranışa "ikincil sürüm ileri sarma" adı verilir. Alt sürümler de dikkate alınmaz. Kabul edilebilir bir çalışma zamanı yüklenmediğinde uygulama çalışmaz.
5.0'ı hedeflerseniz, birkaç kullanım örneği davranışı gösterir:
- ✔️ 5.0 belirtilir. 5.0.3, yüklenen en yüksek yama sürümüdür. 5.0.3 kullanılır.
- ❌ 5.0 belirtilir. 5.0.* sürümü yüklü değil. 3.1.1, yüklenen en yüksek çalışma zamanıdır. Bir hata iletisi görüntülenir.
- ✔️ 5.0 belirtilir. 5.0.* sürümü yüklü değil. 5.1.0, yüklenen en yüksek çalışma zamanı sürümüdür. 5.1.0 kullanılır.
- ❌ 3.0 belirtilir. 3.x sürümü yüklü değil. 5.0.0, yüklenen en yüksek çalışma zamanıdır. Bir hata iletisi görüntülenir.
İkincil sürüm ileri sarma, son kullanıcıları etkileyebilecek tek bir yan etkiye sahiptir. Aşağıdaki senaryoyu değerlendirin:
- Uygulama, 5.0'ın gerekli olduğunu belirtir.
- Çalıştırıldığında sürüm 5.0.* yüklü değildir, ancak 5.1.0 yüklüdür. Sürüm 5.1.0 kullanılacaktır.
- Daha sonra, kullanıcı 5.0.3'ü yükler ve uygulamayı yeniden çalıştırır, 5.0.3 artık kullanılır.
5.0.3 ve 5.1.0'ın özellikle ikili verileri seri hale getirme gibi senaryolarda farklı davranması mümkündür.
İleri sarma davranışını denetleme
Varsayılan ileri sarma davranışını geçersiz kılmadan önce .NET çalışma zamanı uyumluluk düzeyi hakkında bilgi sahibi olun.
Bir uygulamanın ileri sarma davranışı dört farklı yolla yapılandırılabilir:
Özelliğini ayarlayarak
<RollForward>
proje düzeyi ayarı:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>
Dosya
*.runtimeconfig.json
.Bu dosya, uygulamanızı derlediğinizde oluşturulur.
<RollForward>
Özellik projede ayarlandıysa, ayar olarakrollForward
dosyada*.runtimeconfig.json
yeniden üretilir. Kullanıcılar uygulamanızın davranışını değiştirmek için bu dosyayı düzenleyebilir.{ "runtimeOptions": { "tfm": "net5.0", "rollForward": "LatestMinor", "framework": { "name": "Microsoft.NETCore.App", "version": "5.0.0" } } }
Komutun
dotnet
--roll-forward <value>
özelliği.Bir uygulamayı çalıştırdığınızda, komut satırı aracılığıyla ileri sarma davranışını denetleyebilirsiniz:
dotnet run --roll-forward LatestMinor dotnet myapp.dll --roll-forward LatestMinor myapp.exe --roll-forward LatestMinor
Ortam
DOTNET_ROLL_FORWARD
değişkeni.
Öncelik
İleri sarma davranışı, uygulamanız çalıştırıldığında aşağıdaki sırayla ayarlanır ve daha yüksek numaralı öğeler daha düşük numaralı öğelerden önceliklidir:
- İlk olarak
*.runtimeconfig.json
yapılandırma dosyası değerlendirilir. - Ardından ortam
DOTNET_ROLL_FORWARD
değişkeni, önceki denetimi geçersiz kılarak dikkate alınır. - Son olarak, çalışan uygulamaya geçirilen tüm
--roll-forward
parametreler diğer her şeyi geçersiz kılar.
Değerler
Öte yandan ileri sarma ayarını ayarladığınızda, davranışı ayarlamak için aşağıdaki değerlerden birini kullanın:
Value | Açıklama |
---|---|
Minor |
Belirtilmezse varsayılan . İstenen ikincil sürüm eksikse, en düşük daha yüksek ikincil sürüme ileri sarma. İstenen ikincil sürüm varsa, LatestPatch ilke kullanılır. |
Major |
İstenen ana sürüm eksikse sonraki kullanılabilir daha yüksek ana sürüme ve en düşük ikincil sürüme ileri sarma. İstenen ana sürüm varsa, Minor ilke kullanılır. |
LatestPatch |
En yüksek yama sürümüne ileri sarma. Bu değer ikincil sürüm ileri sarmayı devre dışı bırakır. |
LatestMinor |
İstenen ikincil sürüm mevcut olsa bile en yüksek ikincil sürüme ileri sarma. |
LatestMajor |
İstenen ana dal mevcut olsa bile en yüksek ana ve en yüksek ikincil sürüme ileri sarma. |
Disable |
İletmeyin, yalnızca belirtilen sürüme bağlayın. Bu ilke, en son düzeltme eklerine iletme özelliğini devre dışı bırakması nedeniyle genel kullanım için önerilmez. Bu değer yalnızca test için önerilir. |
Bağımsız dağıtımlar seçili çalışma zamanını içerir
Bir uygulamayı bağımsız dağıtım olarak yayımlayabilirsiniz. Bu yaklaşım, .NET çalışma zamanını ve kitaplıklarını uygulamanızla birlikte paketler. Bağımsız dağıtımların çalışma zamanı ortamlarına bağımlılığı yoktur. Çalışma zamanı sürümü seçimi, çalışma zamanında değil yayımlama zamanında gerçekleşir.
Yayımlama sırasında gerçekleşen geri yükleme olayı, verilen çalışma zamanı ailesinin en son düzeltme eki sürümünü seçer. Örneğin, dotnet publish
.NET 5 çalışma zamanı ailesindeki en son yama sürümüyse .NET 5.0.3'i seçer. Hedef çerçeve (en son yüklenen güvenlik düzeltme ekleri dahil) uygulamayla birlikte paketlenir.
Bir uygulama için belirtilen en düşük sürüm karşılanmadıysa bir hata oluşur. dotnet publish
en son çalışma zamanı düzeltme eki sürümüne bağlar (belirli bir major.minor sürüm ailesi içinde). dotnet publish
öğesinin ileri sarma semantiğini desteklemez dotnet run
. Düzeltme ekleri ve bağımsız dağıtımlar hakkında daha fazla bilgi için .NET uygulamalarını dağıtmada çalışma zamanı düzeltme eki seçimi makalesine bakın.
Bağımsız dağıtımlar belirli bir düzeltme eki sürümü gerektirebilir. Aşağıdaki örnekte gösterildiği gibi proje dosyasındaki en düşük çalışma zamanı düzeltme eki sürümünü (daha yüksek veya daha düşük sürümlere) geçersiz kılabilirsiniz:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
öğesi varsayılan RuntimeFrameworkVersion
sürüm ilkesini geçersiz kılar. Bağımsız dağıtımlar için tam RuntimeFrameworkVersion
çalışma zamanı çerçevesi sürümünü belirtir. Çerçeveye bağımlı uygulamalar için, RuntimeFrameworkVersion
gerekli en düşük çalışma zamanı çerçevesi sürümünü belirtir.
Ayrıca bkz.
- .NET'i indirin ve yükleyin.
- .NET Çalışma Zamanı ve SDK'sını kaldırma.