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:

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:

  1. dotnet Yinelenen bir dotnet dosyası arar ve yolu geçerli çalışma dizininden yukarı doğru geziyor.
  2. dotnet bulunan ilk dotnet içinde belirtilen SDK 'yı kullanır.
  3. dotnetdotnet 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. TargetFrameworkAş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.1netcoreapp3.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:

  1. Uygulama, 5,0 'in gerekli olduğunu belirtir.
  2. Ç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.
  3. 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:

  1. özelliği ayarlayarak <RollForward> Project düzeyi ayar:

    <PropertyGroup>
      <RollForward>LatestMinor</RollForward>
    </PropertyGroup>
    
  2. *.runtimeconfig.jsonDosya.

    Bu dosya, uygulamanızı derlerken üretilir. <RollForward>Özellik projede ayarlandıysa, bu ayar olarak rollForward 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"
        }
      }
    }
    
  3. dotnetKomutun --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
    
  4. DOTNET_ROLL_FORWARDOrtam 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:

  1. *.runtimeconfig.jsonİlk olarak yapılandırma dosyası değerlendirilir.
  2. Daha sonra, DOTNET_ROLL_FORWARD ortam değişkeni önceki denetimi geçersiz kılarak kabul edilir.
  3. 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.

Ayrıca bkz.