Kullanmak üzere .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çıklanmıştır. Bu ilkeler, belirtilen sürümleri kullanarak uygulamaları çalıştırma ile hem geliştirici hem de son kullanıcı makinelerini yükseltme kolaylığı sağlama arasında bir denge sağlar. Bu ilkeler şunları sağlar:
- 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 komutunu çalıştırarak SDK, yüklü olan en son sürümü kullanır.
- Derleme derlemesi, hedef çerçeve bilinen adlar derleme zamanı API'lerini tanımlar.
- Bir .NET uygulaması çalıştırarak, hedef çerçeve bağımlı uygulamaları iletir.
- Kendi içinde bir uygulama yayımlarken, kendi içinde dağıtımlar seçilen çalışma zamanı içerir.
Bu belgenin geri kalanında bu dört senaryo inceleniyor.
SDK en son yüklü sürümü kullanır
SDK komutları ve dotnet new dotnet run içerir. .NET CLI'nin her komut için bir SDK sürümü seçmesi dotnet gerekir. Aşağıdakiler olsa bile varsayılan olarak makinede 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'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 faydalanabilirsiniz. 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ü kullanmak gerekebilir. Bu sürümü bir global.json dosyasında belirtirsiniz. "En son sürümü kullan" ilkesi, yalnızca global.json kullanarak en son yüklü sürümden önceki bir .NET SDK sürümünü belirttiğiniz anlamına gelir.
global.json dosya hiyerarşisinin herhangi bir yerine yer olabilir. CLI, bulduğu ilk global.json için proje dizininden yukarı doğru arar. Belirli bir global.json dosyasının hangi projelere uygulanacağı, dosya sistemi yerine sizin denetiminizdir. .NET CLI, geçerli çalışma dizininden yukarı doğru giden yolda gezinmek için global.json dosyasını 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'da belirtilen SDK bulunamazsa, .NET CLI uyumlu bir SDK seçmek için eşleşen kuralları kullanır veya hiçbiri bulunamazsa başarısız olur.
Aşağıdaki örnek global.json söz dizimlerini gösterir:
{
"sdk": {
"version": "5.0.0"
}
}
SDK sürümü seçme işlemi şu şekildedir:
dotnetglobal.json dosyasını, geçerli çalışma dizininden yukarı doğru iterative olarak ters yönde gezinerek arar.dotnet, bulunan ilk global.json içinde belirtilen SDK'yı kullanır.dotnet, global.json bulunamasa en son yüklü SDK'yı kullanır.
SDK sürümü seçimi hakkında daha fazla bilgi için global.json'a genel bakış makalenin Eşleştirme kuralları ve rollForward bölümlerine bakın.
Hedef Çerçeve Bilinen Adlar derleme zamanı API'lerini tanımlar
Projenizi Hedef Çerçeve Bilinen Adı'nde (TFM) tanımlanan API'lere karşı derlersiniz. Hedef çerçeveyi proje dosyasında belirtirsiniz. Proje TargetFramework dosyanız içinde öğesini aşağıdaki örnekte gösterildiği gibi ayarlayın:
<TargetFramework>net5.0</TargetFramework>
Projenizi birden çok TFM'ye karşı oluşturabilirsiniz. Birden çok hedef çerçeveyi ayarlama kitaplıklar için daha yaygındır, ancak uygulamalarla da yapılabilir. Bir özelliği TargetFrameworks (çoğul ) TargetFramework belirtirsiniz. Hedef çerçeveler, aşağıdaki örnekte gösterildiği gibi noktalı virgülle ayrılmıştır:
<TargetFrameworks>net5.0;netcoreapp3.1;net47</TargetFrameworks>
Belirli bir SDK, birlikte birlikte verdiği çalışma zamanının hedef çerçevesiyle eşlenmiş sabit bir çerçeve kümesi destekler. Örneğin, .NET 5 SDK'sı hedef çerçevenin bir uygulaması olan .NET 5 çalışma net5.0 zamanı içerir. .NET 5 netcoreapp2.0 SDK, , netcoreapp2.1 , netcoreapp3.0 vb. destekler, ancak net6.0 desteklemez (veya daha yüksek bir sürümü). için derlemek için .NET 6 SDK'sı net6.0 yükleyin.
.NET Standard
.NET Standard . NET'in farklı uygulamaları tarafından paylaşılan bir API yüzeyini hedeflemenin bir yoludu. BIR API standardı olan .NET 5'in yayımlandırı ile başlayarak, .NET Standard'nin tek bir senaryo dışında pek ilgi düzeyi yoktur: .NET Standard hem .NET hem de .NET Framework. .NET 5, tüm .NET Standard uygulanır.
Daha fazla bilgi için bkz. .NET 5 ve .NET Standard.
Çerçeveye bağımlı uygulamaları ileri sarma
ile kaynaktan, ile çerçeveye bağımlı bir dağıtımdan veya ile çerçeveye bağımlı bir yürütülebilir dosyadan bir uygulama çalıştırarak, yürütülebilir dosya dotnet run dotnet myapp.dll myapp.exe dotnet uygulamanın ana bilgisayarıdır.
Konak, makinede yüklü olan en son düzeltme eki sürümünü seçer. Örneğin, proje dosyanız net5.0 içinde belirttiy ve yüklü en son .NET çalışma zamanı 5.0.2 ise çalışma zamanı 5.0.2 kullanılır.
Kabul edilebilir bir 5.0.* sürüm bulunamazsa yeni 5.* bir sürüm kullanılır. Örneğin, belirttiğiniz ve net5.0 yalnızca 5.1.0 yüklüyse, uygulama çalışma zamanı kullanılarak 5.1.0 çalışır. Bu davranış "ikincil sürüm ileri sarma" olarak adlandırılır. Daha düşük sürümler de dikkate alınmaz. Kabul edilebilir bir çalışma zamanı yüklü değilken uygulama çalıştırılmaz.
Birkaç kullanım örneği, 5.0'a yönelik davranışı gösterir:
- ✔️ 5.0 belirtilir. 5.0.3, yüklü en yüksek düzeltme eki 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üklü 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üklü 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üklü en yüksek çalışma zamanıdır. Bir hata iletisi görüntülenir.
İkincil sürüm ileri sarmanın son kullanıcıları etkileyebilecek bir yan etkisi vardır. Şu senaryoyu göz önünde bulundurun:
- Uygulama 5.0'ın gerekli olduğunu belirtir.
- Çalıştırıldıklarında sürüm 5.0.* yüklenmez, ancak 5.1.0 yüklenir. Sürüm 5.1.0 kullanılır.
- Daha sonra, kullanıcı 5.0.3'ü yükser ve uygulamayı yeniden çalıştırır; 5.0.3 artık kullanılacaktır.
Özellikle ikili verileri seri hale getirme gibi senaryolarda 5.0.3 ve 5.1.0'ın farklı davranması mümkündür.
Öne alma davranışını denetleme
Bir uygulamanın ileri sarma davranışı dört farklı şekilde yalıtabilirsiniz:
Project ayara göre bir üst düzey
<RollForward>ayar:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>*.runtimeconfig.jsonDosya.Bu dosya, uygulama derleyenize kadar üretir. Özellik
<RollForward>projede ayarlanmışsa, dosyada ayar*.runtimeconfig.jsonolarak yenidenrollForwardçoğaltıldı. Kullanıcılar bu dosyayı düzenleyemez ve uygulamanın davranışını değiştirebilir.{ "runtimeOptions": { "tfm": "net5.0", "rollForward": "LatestMinor", "framework": { "name": "Microsoft.NETCore.App", "version": "5.0.0" } } }dotnetKomutun--roll-forward <value>özelliği.Bir uygulamayı çalıştırarak, komut satırı aracılığıyla ileri sarma davranışını kontrol etmek için:
dotnet run --roll-forward LatestMinor dotnet myapp.dll --roll-forward LatestMinor myapp.exe --roll-forward LatestMinorOrtam
DOTNET_ROLL_FORWARDdeğişkeni.
Önceliği
Geri alma davranışı, uygulama çalıştırıldıklarında, daha yüksek numaralı öğelerin daha düşük numaralı öğelerden öncelikli olduğu aşağıdaki sırayla ayarlanır:
- İlk
*.runtimeconfig.jsonolarak yapılandırma dosyası değerlendirilir. - Ardından ortam
DOTNET_ROLL_FORWARDdeğişkeni, önceki denetimi geçersiz kılacak şekilde kabul edilir. - Son olarak,
--roll-forwardçalışan uygulamaya geçirilen parametreler diğer her şeyi geçersiz kılar.
Değerler
Öte yandan ileri sarma ayarını ayarlarsanız, davranışı ayarlamak için aşağıdaki değerlerden birini kullanın:
| Değer | Açıklama |
|---|---|
Minor |
Belirtilmemişse varsayılan değer . İstenen alt sürüm eksikse, en düşük düzeydeki sürüme ilet. İstenen ikincil sürüm varsa, LatestPatch ilke kullanılır. |
Major |
İstenen ana sürüm eksikse, bir sonraki kullanılabilir yüksek büyük sürüme ve en düşük alt sürüme ilet. İstenen ana sürüm varsa, Minor ilke kullanılır. |
LatestPatch |
En yüksek düzeltme eki sürümüne ilet. Bu değer, ikincil sürüm iletmeyi devre dışı bırakır. |
LatestMinor |
İstenen alt sürüm mevcut olsa bile en yüksek düzeyde alt sürüme ilet. |
LatestMajor |
İstenen ana mevcut olsa bile, en yüksek büyük ve en yüksek düzeydeki sürüme ilet. |
Disable |
İletme, yalnızca belirtilen sürüme bağlama. En son düzeltme eklerine iletme özelliğini devre dışı bıraktığından bu ilke genel kullanım için önerilmez. Bu değer yalnızca test için önerilir. |
Kendi içinde dağıtımlar seçilen çalışma zamanlarını içerir
Bir uygulamayı kendi içinde dağıtım olarak yayımlayın. Bu yaklaşım, .NET çalışma zamanı ve kitaplıklarını uygulamanıza paketler. Kendi içinde dağıtımların çalışma zamanı ortamlara 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 oluşan geri yükleme olayı, belirli bir çalışma zamanı ailesinin en son düzeltme eki sürümünü seçer. Örneğin , .NET 5 çalışma zamanı ailesinde en son düzeltme eki sürümü ise dotnet publish .NET 5.0.3'ü seçer. Hedef çerçeve (en son yüklü güvenlik düzeltme ekleri dahil) uygulamayla birlikte paketlenmiştir.
Bir uygulama için belirtilen en düşük sürüm karşıilmezse hata oluşur. dotnet publish en son çalışma zamanı düzeltme eki sürümüne (verilen bir ana.ikincil sürüm ailesi içinde) bağlar. dotnet publish , 'nin ileri sarma semantiklerini dotnet run desteklemez. Düzeltme ekleri ve kendi içinde 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.
Kendi içinde dağıtımlar için belirli bir düzeltme eki sürümü gerekli olabilir. 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 RuntimeFrameworkVersion varsayılan sürüm ilkesi geçersiz kılar. Kendi içinde dağıtımlar için, RuntimeFrameworkVersion tam çalışma zamanı çerçevesi sürümünü belirtir. Çerçeveye bağımlı uygulamalar için gereken RuntimeFrameworkVersion en düşük çalışma zamanı çerçevesi sürümünü belirtir.