Nasıl .NET Framework: Hangi .NET Framework yüklü olduğunu belirleme

Kullanıcılar, bilgisayarlarında birden çok .NET Framework sürümünü yükleyebilir ve çalıştırabilirsiniz. Uygulamanızı geliştirirken veya dağıtırken, kullanıcının bilgisayarına .NET Framework sürümlerinin yüklü olduğunu bilmek zorundayabilirsiniz. Kayıt defteri, bilgisayarda yüklü .NET Framework sürümlerinin listesini içerir.

Not

Bu makale belirli bir .NET Framework. Hangi .NET Core ve .NET 5+ SDK'ların ve çalışma zamanların yüklü olduğunu belirlemek için bkz. .NET'in zaten yüklü olup olmadığını denetleme.

.NET Framework, ayrı olarak sürümü yapılan iki ana bileşenden oluşur:

  • Uygulamalarınız için işlevsellik sağlayan tür ve kaynak koleksiyonları olan bir derleme kümesi. .NET Framework derlemeler aynı sürüm numarasını paylaşır. Örneğin, .NET Framework 4.5, 4.6.1 ve 4.7.2 sürümlerini içerir.

  • Uygulama kodunuzu yöneten ve yürüten ortak dil çalışma zamanı (CLR). Tek bir CLR sürümü genellikle birden çok .NET Framework destekler. Örneğin, CLR sürüm 4.0.30319. xxxxx'in 42000'den küçük olduğu xxxxx, 4. .NET Framework 4.5.2'ye kadar olan sürümleri destekler. 4.0.30319.42000'den büyük veya bu sürüme eşit OLAN CLR sürümü, .NET Framework 4.6 ile başlayan .NET Framework sürümlerini destekler.

Community sürümlerin yüklerini algılamaya yardımcı olmak için .NET Framework bakımı yapılan araçlar vardır:

Her bir sürüm için yüklü güncelleştirmeleri algılama hakkında bilgi .NET Framework bkz. Nasıl .NET Framework yüklemelerini belirleme.

Bir uygulamanın hangi .NET uygulaması ve sürümü üzerinde çalıştır olduğunu belirleme

Özelliğini RuntimeInformation.FrameworkDescription kullanarak, uygulamanın hangi .NET uygulaması ve sürümü üzerinde çalıştır olduğunu sorguabilirsiniz. Uygulama .NET Framework çalışıyorsa, çıkış aşağıdakine benzer:

.NET Framework 4.8.4250.0

Buna karşılık, uygulama .NET Core veya .NET 5+ üzerinde çalışıyorsa, çıkış aşağıdakine benzer:

.NET Core 3.1.9
.NET 5.0.0

4.5 .NET Framework sonraki sürümleri algılama

Bir makinede yüklü .NET Framework (4.5 ve sonrası) sürümü, HKEY_LOCAL_MACHINE SOFTWARE Microsoft NET Framework Kurulumu \ \ \ \ NDP v4 \ Full \ altında kayıt defterinde listelenir. Tam alt anahtar eksikse, .NET Framework 4.5 veya üzeri yüklü değil.

Not

Kayıt defteri yolundaki NET Framework Kurulumu alt anahtarı bir noktayla başlamaz.

Kayıt REG_DWORD Yayın Sürümü değeri, yüklü olan .NET Framework temsil eder.

.NET Framework sürümü Yayın Değeri
.NET Framework 4.5 Tüm Windows işletim sistemleri: 378389
.NET Framework 4.5.1 R2 Windows 8.1 Windows Server 2012 ve üzerinde: 378675
Diğer tüm işletim Windows sistemlerde: 378758
.NET Framework 4.5.2 Tüm Windows işletim sistemleri: 379893
.NET Framework 4.6 Windows 10: 393295
Diğer tüm işletim Windows sistemlerde: 393297
.NET Framework 4.6.1 Windows 10 Kasım Güncelleştirmesi sistemlerinde: 394254
Diğer tüm işletim Windows (Windows 10 dahil): 394271
.NET Framework 4.6.2 Yıldönümü Windows 10 ve Windows Server 2016:394802
Diğer tüm işletim Windows (diğer işletim sistemleri dahil Windows 10): 394806
.NET Framework 4.7 Windows 10 Creators Update: 460798
Diğer tüm işletim Windows (diğer işletim sistemleri Windows 10 dahil): 460805
.NET Framework 4.7.1 Windows 10 Fall Creators Update ve Windows Server'da sürüm 1709: 461308
Diğer tüm işletim Windows (diğer işletim sistemleri Windows 10 dahil): 461310
.NET Framework 4.7.2 Nisan 2018 Güncelleştirmesi Windows Server Windows 10 da sürüm 1803: 461808
Windows Windows 10 Nisan 2018 Güncelleştirmesi ve Windows Server, sürüm 1803 dışında tüm işletim sistemlerinde: 461814
.NET Framework 4.8 Windows 10 Mayıs 2019 Güncelleştirmesi ve Windows 10 Kasım 2019 Güncelleştirmesi: 528040
Mayıs 2020 Güncelleştirmesi Windows 10 Ekim 2020 Güncelleştirmesi ve Windows 10 Mayıs 2021 Güncelleştirmesi Windows 10 de: 528372
11 Windows ve Windows Server 2022'de: 528449
Diğer tüm işletim Windows (diğer işletim sistemleri Windows 10 dahil): 528049

En düşük sürüm

Bir .NET Framework sürümünün mevcut olup olmadığını belirlemek için, aşağıdaki tabloda listelenen karşılık gelen değerden büyük veya ona eşit REG_DWORD yayın sürümü değerini kontrol edin. Örneğin, uygulamanız .NET Framework 4.8 veya sonraki bir sürüm altında çalışıyorsa, 528040'dan büyük veya buna eşit bir Release REG_DWORD değerini test edin.

.NET Framework sürümü En küçük değer
.NET Framework 4.5 378389
.NET Framework 4.5.1 378675
.NET Framework 4.5.2 379893
.NET Framework 4.6 393295
.NET Framework 4.6.1 394254
.NET Framework 4.6.2 394802
.NET Framework 4.7 460798
.NET Framework 4.7.1 461308
.NET Framework 4.7.2 461808
.NET Framework 4.8 528040

Kayıt Defteri Düzenleyicisi'ni kullanma

  1. Başlat menüsünde Çalıştır'ı seçin, regedit girin ve tamam'ı seçin.

    (Regedit çalıştırmak için yönetici kimlik bilgileriniz olması gerekir.)

  2. Kayıt Defteri Düzenleyicisi'nde şu alt anahtarı açın: HKEY_LOCAL_MACHINE SOFTWARE Microsoft NET Framework Kurulumu \ \ \ \ NDP \ v4 \ Tam. Tam alt anahtar yoksa, 4.5 veya .NET Framework yüklü değil.

  3. Release adlı REG_DWORD giriş olup ola bir kontrol edin. Varsa, 4.5 .NET Framework veya sonraki bir sürümü yüklemiş olursanız. Değeri, belirli bir sürüme karşılık .NET Framework. Aşağıdaki şekilde, örneğin Sürüm girişinin değeri 528040'tır ve bu değer, .NET Framework 4.8'in yayın anahtarıdır.

    .NET Framework 4.5 için kayıt defteri girdisi

<a name="use-powershell-to-check-for-a-minimum-version">En düşük sürümü kontrol etmek için PowerShell kullanma

HKEY_LOCAL_MACHINE SOFTWARE Microsoft NET Framework \ Kurulumu \ \ \ NDP v4 \ \ Tam alt anahtarının Release girişinin değerini kontrol etmek için PowerShell komutlarını kullanın.

Aşağıdaki örnekler, sürüm girişinin değerini kontrol edip 4.6.2 .NET Framework veya sonraki bir sürümün yüklü olup olmadığını belirler. Bu kod True yüklüyse ve yüklü değilse False döndürür.

(Get-ItemProperty &quot;HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

Kodu kullanarak kayıt defterini sorgulama

  1. RegistryKey.OpenBaseKeyve RegistryKey.OpenSubKey Windows kayıt defterindeki HKEY_LOCAL_MACHINE \ yazılım \ Microsoft \ NET Framework Setup \ ndp \ v4 \ Full alt anahtarına erişmek için ve yöntemlerini kullanın.

    Önemli

    çalıştırdığınız uygulama 32 bit ise ve 64 bit Windows çalışıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ alt anahtarında kullanılabilir. örneğin, .NET Framework 4,5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ NET Framework Setup \ ndp \ v4 \ Full' dır.

  2. Yüklü sürümü öğrenmek için yayın REG_DWORD değerini denetleyin. ileriye dönük olarak uyumlu olması için .NET Framework sürüm tablosundalistelenen değerden daha büyük veya ona eşit bir değer olup olmadığını kontrol edin.

aşağıdaki örnek, yüklü .NET Framework 4.5-4.8 sürümlerini bulmak için kayıt defterindeki yayın girişinin değerini denetler.

İpucu

using Microsoft.Win32Henüz yapmadıysanız, yönergesini veya Imports Microsoft.Win32 Kod dosyanızın en üstüne ekleyin.

const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
    if (ndpKey != null && ndpKey.GetValue("Release") != null)
    {
        Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}");
    }
    else
    {
        Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
    }
}

// Checking the version using >= enables forward compatibility.
string CheckFor45PlusVersion(int releaseKey)
{
    if (releaseKey >= 528040)
        return "4.8 or later";
    if (releaseKey >= 461808)
        return "4.7.2";
    if (releaseKey >= 461308)
        return "4.7.1";
    if (releaseKey >= 460798)
        return "4.7";
    if (releaseKey >= 394802)
        return "4.6.2";
    if (releaseKey >= 394254)
        return "4.6.1";
    if (releaseKey >= 393295)
        return "4.6";
    if (releaseKey >= 379893)
        return "4.5.2";
    if (releaseKey >= 378675)
        return "4.5.1";
    if (releaseKey >= 378389)
        return "4.5";
    // This code should never execute. A non-null release key should mean
    // that 4.5 or later is installed.
    return "No 4.5 or later version detected";
}
Private Sub Get45PlusFromRegistry()
    Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"

    Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)
        If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
        Else
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
        End If
    End Using
End Sub

' Checking the version using >= enables forward compatibility.
Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
    If releaseKey >= 528040 Then
        Return "4.8 or later"
    ElseIf releaseKey >= 461808 Then
        Return "4.7.2"
    ElseIf releaseKey >= 461308 Then
        Return "4.7.1"
    ElseIf releaseKey >= 460798 Then
        Return "4.7"
    ElseIf releaseKey >= 394802 Then
        Return "4.6.2"
    ElseIf releaseKey >= 394254 Then
        Return "4.6.1"
    ElseIf releaseKey >= 393295 Then
        Return "4.6"
    ElseIf releaseKey >= 379893 Then
        Return "4.5.2"
    ElseIf releaseKey >= 378675 Then
        Return "4.5.1"
    ElseIf releaseKey >= 378389 Then
        Return "4.5"
    End If
    ' This code should never execute. A non-null release key should mean
    ' that 4.5 or later is installed.
    Return "No 4.5 or later version detected"
End Function

Örneğin, aşağıdaki gibi bir çıktı görüntülenir:

.NET Framework Version: 4.6.1

Bu örnek sürüm denetimi için önerilen yöntemi izler:

  • Yayın girişi değerinin bilinen yayın anahtarlarının değerinden büyük veya bu değere eşit olup olmadığını denetler.
  • En son sürümden en eski sürüme sırayla kontrol eder.

1,0 ile 4,0 arasındaki .NET Framework algıla

1,1 ' den 4,0 ' e .NET Framework her sürümü HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ ndp alt anahtarı olarak listelenmiştir. aşağıdaki tabloda her bir .NET Framework sürümünün yolu listelenmektedir. Çoğu sürümde, 1 Bu sürümün yüklü olduğunu göstermek için bir Install REG_DWORD değeri vardır. Bu alt anahtarlarda, sürüm dizesi içeren bir sürüm REG_SZ değeri de vardır.

Not

Kayıt defteri yolundaki net Framework kurulum alt anahtarı bir noktayla başlamaz.

Framework sürümü Kayıt defteri alt anahtarı Değer
1.0 HKLM \ Software \ Microsoft \ . NETFramework \ ilkesi \ v 1.0 \ 3705 Yüklemesi REG_SZ eşittir 1
1.1 HKLM \ Software \ Microsoft \ net Framework Setup \ NDP \ v 1.1.4322 Yüklemesi REG_DWORD eşittir 1
2.0 HKLM \ Software \ Microsoft \ net Framework Setup \ NDP \ v 2.0.50727 Yüklemesi REG_DWORD eşittir 1
3.0 HKLM \ Software \ Microsoft \ net Framework Setup \ NDP \ v 3.0 \ kurulumu Installsuccess REG_DWORD eşittir 1
3,5 HKLM \ Software \ Microsoft \ net Framework Setup \ NDP \ v 3.5 Yüklemesi REG_DWORD eşittir 1
4,0 istemci profili HKLM \ Software \ Microsoft \ net Framework Setup \ NDP \ v4 \ istemcisi Yüklemesi REG_DWORD eşittir 1
4,0 tam profil HKLM \ Software \ Microsoft \ net Framework Kurulumu \ NDP \ v4 \ dolu Yüklemesi REG_DWORD eşittir 1

Önemli

çalıştırdığınız uygulama 32 bit ise ve 64 bit Windows çalışıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ alt anahtarında kullanılabilir. örneğin, .NET Framework 3,5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ NET Framework Setup \ ndp \ v 3.5' dir.

.NET Framework 1,0 alt anahtarına yönelik kayıt defteri yolunun diğerlerinden farklı olduğunu unutmayın.

Kayıt Defteri Düzenleyicisi 'Ni kullan (eski Framework sürümleri)

  1. Başlat menüsünde, Çalıştır' ı seçin, Regedit' i girin ve Tamam' ı seçin.

    Regedit 'i çalıştırmak için yönetici kimlik bilgilerine sahip olmanız gerekir.

  2. Denetlemek istediğiniz sürümle eşleşen alt anahtarı açın. .NET Framework 1,0 ile 4,0 arasında algılama bölümünde bulunan tabloyu kullanın.

    aşağıdaki şekilde, .NET Framework 3,5 için alt anahtar ve sürüm değeri gösterilmektedir.

    .NET Framework 3,5 için kayıt defteri girişi.

Kodu kullanarak kayıt defterini sorgulama (eski Framework sürümleri)

Microsoft.Win32.RegistryKeyWindows kayıt defterindeki HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ ndp alt anahtarına erişmek için sınıfını kullanın.

Önemli

çalıştırdığınız uygulama 32 bit ise ve 64 bit Windows çalışıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ alt anahtarında kullanılabilir. örneğin, .NET Framework 3,5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ NET Framework Setup \ ndp \ v 3.5' dir.

aşağıdaki örnek, yüklü .NET Framework 1-4 sürümlerini bulur:

// Open the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
        RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
        OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
    foreach (var versionKeyName in ndpKey.GetSubKeyNames())
    {
        // Skip .NET Framework 4.5 version information.
        if (versionKeyName == "v4")
        {
            continue;
        }

        if (versionKeyName.StartsWith("v"))
        {
            RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);

            // Get the .NET Framework version value.
            var name = (string)versionKey.GetValue("Version", "");
            // Get the service pack (SP) number.
            var sp = versionKey.GetValue("SP", "").ToString();

            // Get the installation flag.
            var install = versionKey.GetValue("Install", "").ToString();
            if (string.IsNullOrEmpty(install))
            {
                // No install info; it must be in a child subkey.
                Console.WriteLine($"{versionKeyName}  {name}");
            }
            else if (install == "1")
            {
                // Install = 1 means the version is installed.

                if (!string.IsNullOrEmpty(sp))
                {
                    Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
                }
                else
                {
                    Console.WriteLine($"{versionKeyName}  {name}");
                }
            }

            if (!string.IsNullOrEmpty(name))
            {
                continue;
            }
            // else print out info from subkeys...

            // Iterate through the subkeys of the version subkey.
            foreach (var subKeyName in versionKey.GetSubKeyNames())
            {
                RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                name = (string)subKey.GetValue("Version", "");
                if (!string.IsNullOrEmpty(name))
                    sp = subKey.GetValue("SP", "").ToString();

                install = subKey.GetValue("Install", "").ToString();
                if (string.IsNullOrEmpty(install))
                {
                    // No install info; it must be later.
                    Console.WriteLine($"{versionKeyName}  {name}");
                }
                else if (install == "1")
                {
                    if (!string.IsNullOrEmpty(sp))
                    {
                        Console.WriteLine($"{subKeyName}  {name}  SP{sp}");
                    }
                    else
                    {
                        Console.WriteLine($"  {subKeyName}  {name}");
                    }
                }
            }
        }
    }
}
' Opens the registry key for the .NET Framework entry.
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
    OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")

    For Each versionKeyName In ndpKey.GetSubKeyNames()
        ' Skip .NET Framework 4.5 and later.
        If versionKeyName = "v4" Then Continue For

        If versionKeyName.StartsWith("v") Then
            Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
            ' Get the .NET Framework version value.
            Dim name = DirectCast(versionKey.GetValue("Version", ""), String)
            ' Get the service pack (SP) number.
            Dim sp = versionKey.GetValue("SP", "").ToString()

            Dim install = versionKey.GetValue("Install", "").ToString()
            If String.IsNullOrEmpty(install) Then
                ' No install info; it must be in a child subkey.
                Console.WriteLine($"{versionKeyName}  {name}")
            ElseIf install = "1" Then

                If Not String.IsNullOrEmpty(sp) Then
                    Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                Else
                    Console.WriteLine($"{versionKeyName}  {name}")
                End If

            End If

            If Not String.IsNullOrEmpty(name) Then
                Continue For
            End If

            For Each subKeyName In versionKey.GetSubKeyNames()
                Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
                name = DirectCast(subKey.GetValue("Version", ""), String)
                If Not String.IsNullOrEmpty(name) Then
                    sp = subKey.GetValue("SP", "").ToString()
                End If

                install = subKey.GetValue("Install", "").ToString()
                If String.IsNullOrEmpty(install) Then
                    ' No install info; it must be later.
                    Console.WriteLine($"{versionKeyName}  {name}")
                ElseIf install = "1" Then

                    If Not String.IsNullOrEmpty(sp) Then
                        Console.WriteLine($"{subKeyName}  {name}  SP{sp}")
                    Else
                        Console.WriteLine($"  {subKeyName}  {name}")
                    End If

                End If
            Next
        End If
    Next
End Using

Örnek aşağıdakine benzer bir çıktı görüntüler:

v2.0.50727  2.0.50727.4927  SP2
v3.0  3.0.30729.4926  SP2
v3.5  3.5.30729.4926  SP1
v4.0
  Client  4.0.0.0

CLR sürümlerini bul

.NET Framework ile yüklenen .NET Framework CLR 'nin sürümü ayrı olarak sağlanır. .NET Framework CLR sürümünü algılamamanın iki yolu vardır:

  • Clrver.exe aracı

    Clr Sürüm aracı 'nı (Clrver.exe) kullanarak bir bılgısayarda hangi CLR sürümlerinin yüklü olduğunu saptayın. Visual Studio Geliştirici Komut İstemi veya Visual Studio geliştirici PowerShell 'i açın ve girin clrver .

    Örnek çıktı:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • EnvironmentSınıfı

    Önemli

    .NET Framework 4,5 ve sonraki sürümlerinde, Environment.Version CLR sürümünü algılamak için özelliğini kullanmayın. bunun yerine, kayıt defterini .NET Framework 4,5 ve sonraki sürümlerindeaçıklandığı gibi sorgulayın.

    1. Environment.VersionNesneyi almak için özelliği sorgulayın Version .

      Döndürülen System.Version nesne, şu anda kodu yürüten çalışma zamanının sürümünü tanımlar. Derleme sürümlerini veya çalışma zamanının bilgisayarda yüklü olabilecek diğer sürümlerini döndürmez.

      .NET Framework sürümleri 4, 4,5, 4.5.1 ve 4.5.2 için, döndürülen nesnenin dize temsili Version 4.0.30319 biçimindedir.xxxxx, xxxxx 42000 ' den küçük. .NET Framework 4,6 ve sonraki sürümlerinde, 4.0.30319.42000 biçiminde olur.

    2. Sürüm nesnesine sahip olduktan sonra, aşağıdaki gibi sorgulayın:

      • Ana yayın tanımlayıcısı için (örneğin, sürüm 4,0 için 4 ), Version.Major özelliğini kullanın.

      • Küçük yayın tanımlayıcısı için (örneğin, sürüm 4,0 için 0 ), Version.Minor özelliğini kullanın.

      • Tüm sürüm dizesi için (örneğin, 4.0.30319.18010), Version.ToString yöntemini kullanın. Bu yöntem, kodu yürüten çalışma zamanının sürümünü yansıtan tek bir değer döndürür. Bu, bilgisayarda yüklü olabilecek derleme sürümlerini veya diğer çalışma zamanı sürümlerini döndürmez.

    Aşağıdaki örnek Environment.Version CLR sürüm bilgilerini almak için özelliğini kullanır:

    Console.WriteLine($"Version: {Environment.Version}");
    
    Console.WriteLine($"Version: {Environment.Version}")
    

    Örnek aşağıdakine benzer bir çıktı görüntüler:

    Version: 4.0.30319.18010
    

Ayrıca bkz.