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 kullanarak çalışan uygulamalar arasında bir denge sağlar ve hem geliştirici hem de Son Kullanıcı makinelerini yükseltme kolaylığını etkinleştirir. Bu ilkeler şunları etkinleştirir:
- Güvenlik ve güvenilirlik güncelleştirmeleri dahil olmak üzere kolay ve verimli .NET 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 meydana gelir:
- SDK komutunu çalıştırdığınızda, SDK en son yüklenen sürümü kullanır.
- Bir derleme oluşturduğunuzda, hedef çerçeve takma adları derleme süresi API 'lerini tanımlar.
- Bir .NET uygulaması çalıştırdığınızda, hedef Framework bağımlı uygulamalar geri iletme.
- Kendi içinde olan bir uygulamayı yayımladığınızda, kendi içinde kapsanan dağıtımlar seçili çalışma zamanını içerir.
Bu belgenin geri kalanında bu dört senaryo incededir.
SDK en son yüklü sürümü kullanıyor
SDK komutları ve dotnet run
içerir dotnet new
. .NET CLı her dotnet
komut için BIR SDK sürümü seçmelidir. Şu durumlarda bile varsayılan olarak makinede yüklü olan en son SDK 'yi 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ındabelirtirsiniz. "En son kullanımı" ilkesi, yalnızca genel. JSON ' i kullanarak en son yüklenen sürümden daha eski BIR .NET SDK sürümü belirtmenizi sağlar.
Global. JSON dosya hiyerarşisinde herhangi bir yere yerleştirilebilir. CLı, bulduğu ilk Global. JSON için proje dizininden yukarı doğru arama yapar. Verilen bir Global. JSON dosyası, dosya sistemindeki yerine hangi projelerin uygulanacağını kontrol edersiniz. .NET CLı, yolu geçerli çalışma dizininden yukarı doğru gezerek bir Global. JSON dosyası arar. Bulunan ilk Global. JSON dosyası kullanılan sürümü belirtiyor. Bu SDK sürümü yüklüyse, bu sürüm kullanılır. Global. JSON IÇINDE belirtilen SDK bulunamazsa, .net CLI uyumlu bir SDK seçmek için eşleşen kuralları kullanır veya Hiçbiri bulunmazsa başarısız olur.
Aşağıdaki örnek, Global. JSON sözdizimini göstermektedir:
{
"sdk": {
"version": "5.0.0"
}
}
SDK sürümü seçme işlemi şu şekilde yapılır:
dotnet
Yinelenen birdotnet
dosyası arar ve yolu geçerli çalışma dizininden yukarı doğru geziyor.dotnet
bulunan ilkdotnet
içinde belirtilen SDK 'yı kullanır.dotnet
dotnet
bulunmazsa, en son yüklenen SDK 'yı kullanır.
SDK sürüm seçimi hakkında daha fazla bilgi için Global. JSON genel bakış makalesinin eşleşen kuralları ve rollforward bölümlerine bakın.
Hedef çerçeve takma adları derleme süresi API 'Lerini tanımlar
Projenizi bir hedef çerçeve bilinen adı 'nda (tfd) tanımlanan API 'lerle derleyin. Hedef çerçevesini proje dosyasında belirtirsiniz. TargetFramework
Aşağıdaki örnekte gösterildiği gibi proje dosyanızdaki öğesini ayarlayın:
<TargetFramework>net5.0</TargetFramework>
Projenizi birden çok TFMs 'ye karşı derleyebilirsiniz. Birden çok hedef çerçeveyi ayarlamak kitaplıklar için daha yaygındır, ancak uygulamalarla da gerçekleştirilebilir. Bir TargetFrameworks
Özellik (çoğul TargetFramework
) belirlersiniz. 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 geldiği çalışma zamanının hedef çerçevesine katıp sabit bir çerçeve kümesini destekler. Örneğin, .NET 5 SDK, hedef Framework 'ün net5.0
uygulanması olan .NET 5 çalışma zamanını içerir. .NET 5 SDK, netcoreapp2.1
netcoreapp3.0
,, vb. destekler netcoreapp2.0
, ancak net6.0
(veya üzeri). İçin net6.0
derlemek üzere .net 6 SDK 'sını yüklersiniz.
.NET Standard
.NET Standard, farklı .NET uygulamaları tarafından paylaşılan bir API yüzeyini hedeflemek için bir yoldur. Bir API standardı olan .NET 5 sürümü ile başlayarak, tek bir senaryo haricinde .NET Standard biraz ilgidir: .NET Standard hem .NET hem de .NET Framework hedeflemek istediğinizde yararlı olur. .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 alma-iletme
İle kaynağından dotnet run
, dotnet run
veya ile çerçeveye bağlı bir yürütülebilirden uygulama çalıştırdığınızda, çalıştırılabilir dosya uygulamanın ana bilgisayarı olur.
Konak makinede yüklü 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 bulunamazsa yeni 5.*
bir sürüm kullanılır. Örneğin, belirtilmişse net5.0
ve yalnızca 5.1.0
yüklüyse, uygulama çalışma zamanını kullanarak 5.1.0
çalışır. Bu davranış, "ikincil sürüm alma" olarak adlandırılır. Alt sürümler de göz önünde bulundurulmaz. Kabul edilebilir çalışma zamanı yüklü olmadığında uygulama çalıştırılmaz.
Birkaç kullanım örneği, 5,0 hedefliyorsanız davranışı gösterir:
- ✔️ 5,0 belirtildi. 5.0.3, en yüksek düzeltme eki sürümüdür. 5.0.3 kullanılır.
- ❌ 5,0 belirtildi. 5,0. * sürüm yüklendi. 3.1.1, en yüksek çalışma zamanının yüklü olduğunu. Bir hata iletisi görüntülenir.
- ✔️ 5,0 belirtildi. 5,0. * sürüm yüklendi. 5.1.0, en yüksek çalışma zamanı sürümüdür. 5.1.0 kullanılır.
- ❌ 3,0 belirtildi. 3. x sürümü yüklü değil. 5.0.0, yüklü olan en yüksek çalışma zamanı. Bir hata iletisi görüntülenir.
İkincil sürüm al-ileri, son kullanıcıları etkileyebilecek bir yan etkiye sahiptir. Şu senaryoyu göz önünde bulundurun:
- Uygulama, 5,0 'in gerekli olduğunu belirtir.
- Çalıştırıldığında, 5,0. * sürümü yüklü değildir, ancak 5.1.0. Sürüm 5.1.0 kullanılacak.
- Daha sonra, Kullanıcı 5.0.3 yükleyip uygulamayı yeniden çalıştırdığında 5.0.3 artık kullanılacaktır.
Özellikle ikili verileri serileştirme gibi senaryolar için 5.0.3 ve 5.1.0 farklı şekilde davranması olasıdır.
Denetim alma-iletme davranışı
Bir uygulamanın geri alma davranışı dört farklı şekilde yapılandırılabilir:
özelliği ayarlayarak
<RollForward>
Project düzeyi ayar:<PropertyGroup> <RollForward>LatestMinor</RollForward> </PropertyGroup>
*.runtimeconfig.json
Dosya.Bu dosya, uygulamanızı derlerken üretilir.
<RollForward>
Özellik projede ayarlandıysa, bu ayar olarakrollForward
dosyada yeniden oluşturulur*.runtimeconfig.json
. 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" } } }
dotnet
Komutun--roll-forward <value>
özelliği.Bir uygulamayı çalıştırdığınızda, komut satırı aracılığıyla geri alma davranışını kontrol edebilirsiniz:
dotnet run --roll-forward LatestMinor dotnet myapp.dll --roll-forward LatestMinor myapp.exe --roll-forward LatestMinor
DOTNET_ROLL_FORWARD
Ortam değişkeni.
Önceliği
Geri alma davranışı, uygulamanız çalıştırıldığında aşağıdaki sıraya göre ayarlanır, daha yüksek numaralı öğeler daha düşük numaralı öğeler üzerinde önceliklidir:
*.runtimeconfig.json
İlk olarak yapılandırma dosyası değerlendirilir.- Daha sonra,
DOTNET_ROLL_FORWARD
ortam değişkeni önceki denetimi geçersiz kılarak kabul edilir. - Son olarak, çalışan uygulamaya geçirilen herhangi bir
--roll-forward
parametre diğer her şeyi geçersiz kılar.
Değerler
Ancak, geri iletme 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çindeki dağıtımlar seçili çalışma zamanını içerir
Bir uygulamayı kendi kendine dahiledilen bir dağıtım olarak yayımlayabilirsiniz. Bu yaklaşım, uygulamanızla birlikte .NET çalışma zamanını ve kitaplıklarını paketler. Kendi içinde olan dağıtımlar çalışma zamanı ortamlarına bağımlılığı yoktur. Çalışma zamanı sürüm seçimi yayımlama zamanında gerçekleşir, çalışma zamanı değildir.
Yayımlama sırasında ortaya çıkan geri yükleme olayı, belirtilen çalışma zamanı ailesinin en son düzeltme eki sürümünü seçer. Örneğin, dotnet publish
.NET 5.0.3, .NET 5 çalışma zamanı ailesindeki en son düzeltme eki sürümledir. Hedef Framework (en son yüklenen güvenlik düzeltme ekleri dahil) uygulamayla birlikte paketlenir.
Bir uygulama için belirtilen minimum sürüm karşılanmazsa bir hata oluşur. dotnet publish
en son çalışma zamanı düzeltme eki sürümüne bağlar (belirli bir ana. ikincil sürüm ailesi içinde). dotnet publish
, ' ın dotnet run
geri iletme semantiğini desteklemez. Düzeltme ekleri ve bağımsız dağıtımlar hakkında daha fazla bilgi için .NET uygulamaları dağıtma konusunda çalışma zamanı düzeltme eki seçimi başlıklı makaleye bakın.
Kendi içinde olan dağıtımlar belirli bir düzeltme eki sürümü gerektirebilir. Aşağıdaki örnekte gösterildiği gibi, proje dosyasında 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>
RuntimeFrameworkVersion
Öğesi varsayılan sürüm ilkesini geçersiz kılar. Kendi içinde olan dağıtımlar RuntimeFrameworkVersion
için, RuntimeFrameworkVersion
çalışma zamanı çerçevesi sürümünü belirtir. Çerçeveye bağımlı uygulamalar RuntimeFrameworkVersion
için gereken RuntimeFrameworkVersion
çalışma zamanı çerçevesi sürümünü belirtir.