Nasıl yapılır: Hangi .NET Framework sürümlerinin yüklü olduğunu belirleme

Not

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

Bir bilgisayara .NET Framework'ün birden çok sürümünü yükleyebilir ve çalıştırabilirsiniz.

  • Sürümleri kendi bilgisayarınızda denetlemek istiyorsanız, en kolay yol Denetim Masası> Programs>Programları ve Özellikleri veya Uygulamalar>Yüklü uygulamalar altındaki Ayarlar kullanmaktır. Topluluk tarafından korunan bu araçları da kullanabilirsiniz.
  • Uygulama geliştiricisiyseniz, uygulama kullanıcısının bilgisayarında hangi .NET Framework sürümlerinin yüklü olduğunu bilmeniz gerekebilir. Kayıt defteri , bilgisayarda yüklü .NET Framework sürümlerinin listesini içerir. Özelliğini de sorgulayabilirsinizRuntimeInformation.FrameworkDescription.
  • Ayrı olarak sürümlenen CLR sürümünü bulmak için bkz . CLR sürümlerini bulma.

.NET Framework, ayrı olarak sürümü oluşturulan 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 ve derlemeler aynı sürüm numarasını paylaşır. Örneğin, .NET Framework sürümleri 4.5, 4.6.1 ve 4.7.2'yi içerir.
  • Uygulamanızın kodunu yöneten ve yürüten ortak dil çalışma zamanı (CLR). Tek bir CLR sürümü genellikle birden çok .NET Framework sürümünü destekler. Örneğin, CLR sürüm 4.0.30319.xxxxx'in 42000'den küçük olduğu xxxxx , .NET Framework 4 ile 4.5.2 arasında sürümleri destekler. 4.0.30319.42000'den büyük veya buna eşit CLR sürümü, .NET Framework 4.6 ile başlayan .NET Framework sürümlerini destekler.

İpucu

.NET Framework'ün her sürümü için yüklü güncelleştirmeleri algılama hakkında bilgi için bkz . Nasıl yapılır: Hangi .NET Framework güncelleştirmelerinin yüklendiğini belirleme.

Topluluk tarafından korunan araçlar

Hangi .NET Framework sürümlerinin yüklü olduğunu algılamaya yardımcı olmak için topluluk tarafından korunan araçlar sağlanır:

RuntimeInformation.FrameworkDescription Özellik

Uygulamanızın hangi .NET sürümünde çalıştığını program aracılığıyla sorgulamak için özelliğini kullanabilirsiniz RuntimeInformation.FrameworkDescription . Uygulama .NET Framework üzerinde çalışıyorsa, çıkış şuna benzer olacaktır:

.NET Framework 4.8.4250.0

Karşılaştırmak gerekirse, uygulama .NET Core veya .NET 5+ üzerinde çalışıyorsa çıkış şuna benzer olacaktır:

.NET Core 3.1.9
.NET 5.0.0

Kayıt Defteri

Hangi .NET Framework sürümünün yüklü olduğunu algılamak için kayıt defterini kullanabilirsiniz. .NET Framework 1.0-4.0 ve .NET Framework 4.5+ için anahtarlar farklıdır. Kayıt defterini denetlemek için Kayıt Defteri Düzenleyicisi' ni, PowerShell'i veya kodu kullanabilirsiniz.

.NET Framework 4.5 ve sonraki sürümleri

Bir makineye yüklenen .NET Framework (4.5 ve üzeri) sürümü, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full konumundaki kayıt defterinde listelenir. Tam alt anahtar eksikse, .NET Framework 4.5 veya üzeri yüklü değildir.

Not

Kayıt defteri yolundaki NET Framework Kurulum alt anahtarı bir nokta ile başlamaz.

Kayıt defterindeki Release REG_DWORD değeri yüklü .NET Framework sürümünü 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 Windows 8.1 ve Windows Server 2012 R2'de: 378675
Diğer tüm Windows işletim sistemlerinde: 378758
.NET Framework 4.5.2 Tüm Windows işletim sistemleri: 379893
.NET Framework 4.6 Windows 10'da: 393295
Diğer tüm Windows işletim sistemlerinde: 393297
.NET Framework 4.6.1 Windows 10 Kasım Güncelleştirme sistemlerinde: 394254
Diğer tüm Windows işletim sistemlerinde (Windows 10 dahil): 394271
.NET Framework 4.6.2 Windows 10 Yıldönümü Güncelleştirmesi ve Windows Server 2016'da: 394802
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 394806
.NET Framework 4.7 Windows 10 Creators Update'te: 460798
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri 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 Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 461310
.NET Framework 4.7.2 Windows 10 Nisan 2018 Güncelleştirmesi ve Windows Server'da sürüm 1803: 461808
Windows 10 Nisan 2018 Update ve Windows Server dışındaki tüm Windows işletim sistemlerinde sürüm 1803: 461814
.NET Framework 4.8 Windows 10 Mayıs 2019 Güncelleştirmesi ve Windows 10 Kasım 2019 Güncelleştirmesi: 528040
Windows 10 Mayıs 2020 Güncelleştirmesi, Ekim 2020 Güncelleştirmesi, Mayıs 2021 Güncelleştirmesi, Kasım 2021 Güncelleştirmesi ve 2022 Güncelleştirmesi: 528372
Windows 11 ve Windows Server 2022'de: 528449
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 528049
.NET Framework 4.8.1 Windows 11 2022 Güncelleştirmesi ve Windows 11 2023 Güncelleştirmesinde: 533320
Diğer tüm Windows işletim sistemleri: 533325

En düşük sürüm

.NET Framework'ün en düşük 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 buna eşit bir Release REG_DWORD değeri olup olmadığını denetleyin. Örneğin, uygulamanız .NET Framework 4.8 veya sonraki bir sürüm altında çalışıyorsa, 528040'tan büyük veya buna eşit bir Release REG_DWORD değeri için test edin.

.NET Framework sürümü Minimum 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
.NET Framework 4.8.1 533320

Kayıt Defteri Düzenleyicisi'ni kullanma

  1. Başlat menüsünde Çalıştır'ı seçin, regedit yazın ve ardından Tamam'ı seçin.

    (Regedit'i çalıştırmak için yönetici kimlik bilgileriniz olmalıdır.)

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

  3. Release adlı bir REG_DWORD girdisi olup olmadığını denetleyin. Varsa, .NET Framework 4.5 veya üzeri yüklüdür. Değeri belirli bir .NET Framework sürümüne karşılık gelir. Aşağıdaki şekilde, örneğin, Release girdisinin değeri 528040'tır ve .NET Framework 4.8'in yayın anahtarıdır.

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

En düşük sürümü denetlemek için PowerShell kullanma

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full alt anahtarının Release girişinin değerini denetlemek için PowerShell komutlarını kullanın.

Aşağıdaki örnekler, .NET Framework 4.6.2 veya sonraki bir sürümün yüklü olup olmadığını belirlemek için Yayın girdisinin değerini denetler. Bu kod yüklüyse ve False değilse döndürürTrue.

(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 394802

Kodu kullanarak kayıt defterini sorgulama

  1. Windows kayıt defterindeki RegistryKey.OpenBaseKeyHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full alt anahtarına erişmek için ve RegistryKey.OpenSubKey yöntemlerini kullanın.

    Önemli

    Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows'ta ç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 bulunur. Ö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 şeklindedir.

  2. Yüklü sürümü belirlemek için Release REG_DWORD değerini denetleyin. İleriye dönük uyumlu olmak için .NET Framework sürüm tablosunda listelenen değerden büyük veya buna eşit bir değer olup olmadığını denetleyin.

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

İpucu

Henüz yapmadıysanız yönergesini using Microsoft.Win32 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 >= 533320)
        return "4.8.1 or later";
    if (releaseKey >= 528040)
        return "4.8";
    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 >= 533320 Then
        Return "4.8.1 or later"
    ElseIf releaseKey >= 528040 Then
        Return "4.8"
    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

Örnekte çıktı aşağıdaki gibi görüntülenir:

.NET Framework Version: 4.6.1

PowerShell kullanarak kayıt defterini sorgulama

Aşağıdaki örnek, yüklü .NET Framework 4.5-4.8.1 sürümlerini bulmak üzere kayıt defterindeki Release girişinin değerini denetlemek için PowerShell'i kullanır:

$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
switch ($release) {
    { $_ -ge 533320 } { $version = '4.8.1 or later'; break }
    { $_ -ge 528040 } { $version = '4.8'; break }
    { $_ -ge 461808 } { $version = '4.7.2'; break }
    { $_ -ge 461308 } { $version = '4.7.1'; break }
    { $_ -ge 460798 } { $version = '4.7'; break }
    { $_ -ge 394802 } { $version = '4.6.2'; break }
    { $_ -ge 394254 } { $version = '4.6.1'; break }
    { $_ -ge 393295 } { $version = '4.6'; break }
    { $_ -ge 379893 } { $version = '4.5.2'; break }
    { $_ -ge 378675 } { $version = '4.5.1'; break }
    { $_ -ge 378389 } { $version = '4.5'; break }
    default { $version = $null; break }
}

if ($version) {
    Write-Host -Object ".NET Framework Version: $version"
} else {
    Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}

Bu örnek, sürüm denetimi için önerilen uygulamayı izler:

  • Yayın girdisinin değerinin bilinen yayın anahtarlarının değerinden büyük veya buna eşit olup olmadığını denetler.
  • En son sürümden en eski sürüme doğru sırayla denetler.

.NET Framework 1.0-4.0

.NET Framework'ün 1.1 ile 4.0 sürümlerinden her biri HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP konumunda alt anahtar olarak listelenir. Aşağıdaki tabloda her .NET Framework sürümünün yolu listelenmektedir. Çoğu sürümde, bu sürümün yüklü olduğunu belirtmek için bir Install REG_DWORD değeri 1 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 nokta ile başlamaz.

Çerçeve Sürümü Kayıt Defteri Alt Anahtarı Değer
1.0 HKLM\Software\Microsoft\. NETFramework\Policy\v1.0\3705 yükleme REG_SZ eşittir 1
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 yükleme REG_DWORD eşittir 1
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 yükleme REG_DWORD eşittir 1
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD eşittir 1
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 yükleme REG_DWORD eşittir 1
4.0 İstemci Profili HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client yükleme REG_DWORD eşittir 1
4.0 Tam Profil HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full yükleme REG_DWORD eşittir 1

Önemli

Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows'ta ç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 bulunur. Örneğin, .NET Framework 3.5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5 şeklindedir.

.NET Framework 1.0 alt anahtarının kayıt defteri yolunun diğerlerinden farklı olduğuna dikkat edin.

Kayıt Defteri Düzenleyicisi'ni kullanma (eski çerçeve sürümleri)

  1. Başlat menüsünde Çalıştır'ı seçin, regedit yazın ve ardından Tamam'ı seçin.

    Regedit'i çalıştırmak için yönetici kimlik bilgileriniz olmalıdır.

  2. Denetlemek istediğiniz sürümle eşleşen alt anahtarı açın. .NET Framework 1.0-4.0 bölümündeki tabloyu kullanın.

    Aşağıdaki şekilde alt anahtar ve .NET Framework 3.5 için Sürüm değeri gösterilmektedir.

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

Kodu kullanarak kayıt defterini sorgulama (eski çerçeve sürümleri)

Sınıfını Microsoft.Win32.RegistryKey kullanarak Windows kayıt defterindeki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP alt anahtarına erişin.

Önemli

Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows'ta ç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 bulunur. Örneğin, .NET Framework 3.5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5 şeklindedir.

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

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

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

PowerShell kullanarak kayıt defterini sorgulama (eski çerçeve sürümleri)

Aşağıdaki örnek, yüklü .NET Framework 1-4 sürümlerini bulmak üzere kayıt defterindeki Release girişinin değerini denetlemek için PowerShell'i kullanır:

Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' |
Where-Object { ($_.PSChildName -ne "v4") -and ($_.PSChildName -like 'v*') } |
ForEach-Object {
    $name = $_.Version
    $sp = $_.SP
    $install = $_.Install
    if (-not $install) {
        Write-Host -Object "$($_.PSChildName)  $($name)"
    }
    elseif ($install -eq '1') {
        if (-not $sp) {
            Write-Host -Object "$($_.PSChildName)  $($name)"
        }
        else {
            Write-Host -Object "$($_.PSChildName)  $($name) SP$($sp)"
        }
}
    if (-not $name) {
        $parentName = $_.PSChildName
        Get-ChildItem -LiteralPath $_.PSPath |
        Where-Object {
            if ($_.Property -contains 'Version') { $name = Get-ItemPropertyValue -Path $_.PSPath -Name Version }
            if ($name -and ($_.Property -contains 'SP')) { $sp = Get-ItemPropertyValue -Path $_.PSPath -Name SP }
            if ($_.Property -contains 'Install') { $install = Get-ItemPropertyValue -Path $_.PSPath -Name Install }
            if (-not $install) {
                Write-Host -Object "  $($parentName)  $($name)"
            }
            elseif ($install -eq '1') {
                if (-not $sp) {
                    Write-Host -Object "  $($_.PSChildName)  $($name)"
                }
                else {
                    Write-Host -Object "  $($_.PSChildName)  $($name) SP$($sp)"
                }
            }
        }
    }
}

CLR sürümlerini bulma

.NET Framework ile yüklenen .NET Framework CLR ayrı olarak sürümü oluşturulur. .NET Framework CLR sürümünü algılamanın iki yolu vardır:

Clrver.exe aracı

Bir bilgisayarda hangi CLR sürümlerinin yüklü olduğunu belirlemek için CLR Sürüm aracını (Clrver.exe) kullanın. Visual Studio Geliştirici Komut İstemi'ni veya Visual Studio Geliştirici PowerShell'i açın ve girinclrver.

Örnek çıkış:

Versions installed on the machine:
v2.0.50727
v4.0.30319

özelliği Environment.Version

Önemli

.NET Framework 4.5 ve sonraki sürümler için CLR sürümünü algılamak için özelliğini kullanmayın Environment.Version . Bunun yerine kayıt defterini .NET Framework 4.5 ve sonraki sürümlerde açıklandığı gibi sorgulayın.

  1. Environment.Version Nesneyi almak Version için özelliğini sorgula.

    Döndürülen System.Version nesne, kodu yürütmekte olan çalışma zamanının sürümünü tanımlar. Bilgisayarda yüklü olabilecek derleme sürümlerini veya çalışma zamanının diğer sürümlerini döndürmez.

    .NET Framework sürüm 4, 4.5, 4.5.1 ve 4.5.2 için, döndürülen Version nesnenin dize gösterimi 4.0.30319 biçimindedir.xxxxx, burada xxxxx 42000'den küçüktür. .NET Framework 4.6 ve sonraki sürümleri için 4.0.30319.42000 biçimindedir.

  2. Version nesnesini aldıktan sonra aşağıdaki gibi sorgulayın:

    • Ana sürüm tanımlayıcısı için (örneğin, sürüm 4.0 için 4), özelliğini kullanın Version.Major .
    • İkincil sürüm tanımlayıcısı için (örneğin, sürüm 4.0 için 0) özelliğini kullanınVersion.Minor.
    • Sürüm dizesinin tamamı için (örneğin, 4.0.30319.18010), yöntemini kullanın Version.ToString . 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. Bilgisayarda yüklü olabilecek derleme sürümlerini veya diğer çalışma zamanı sürümlerini döndürmez.

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

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

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

Version: 4.0.30319.18010

Ayrıca bkz.