Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Versi Rangka Kerja .NET yang Dipasang dengan Tepat?

Bagaimanakah Saya Boleh Menentukan Versi Rangka Kerja .NET yang Dipasang dengan Tepat?

Susan Sarandon
Susan Sarandonasal
2025-01-15 10:31:46985semak imbas

How Can I Accurately Determine the Installed .NET Framework Version?

Cara yang lebih mudah untuk menentukan versi .NET Framework

Kaedah

Environment.Version() selalunya tidak cukup tepat untuk menentukan versi Rangka Kerja .NET dengan tepat, terutamanya apabila mengesan versi 3.5 SP 1. Artikel ini meneroka kaedah alternatif untuk memanfaatkan nilai pendaftaran untuk menyediakan penyelesaian yang lebih dipercayai.

Dapatkan maklumat versi

Untuk .NET versi 1-4, mendapatkan semula rangka kerja dan maklumat pek perkhidmatan daripada pendaftaran melibatkan langkah berikut:

  1. Buka kekunci pendaftaran "SOFTWAREMicrosoftNET Framework SetupNDP".
  2. Gelung nama subkunci, yang mewakili versi yang dipasang.
  3. Ekstrak versi rangka kerja dengan mengalih keluar 'v' pada permulaan nama subkunci.
  4. Buka subkunci yang sepadan dengan versi tertinggi dan dapatkan nilai "SP" untuk menentukan tahap pek perkhidmatan.

.NET 1-4 kod contoh versi:

<code class="language-csharp">using Microsoft.Win32;
using System.Globalization;

RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
string[] version_names = installed_versions.GetSubKeyNames();
double Framework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0));</code>

Versi .NET 4.5 disokong

Untuk .NET 4.5 dan ke atas, dokumentasi Microsoft rasmi menyediakan pendekatan yang berbeza:

  1. Selesaikan nilai "Release" dalam kunci pendaftaran "SOFTWAREMicrosoftNET Framework SetupNDPv4Full".
  2. Gunakan nilai ini untuk menentukan versi yang sepadan berdasarkan skop yang telah ditetapkan.

Kod contoh versi .NET 4.5:

<code class="language-csharp">using System;
using Microsoft.Win32;


private static void Get45or451FromRegistry()
{
    using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\")) {
        int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
        if (true) {
            Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
        }
    }
}


...


private static string CheckFor45DotVersion(int releaseKey)
{
    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 >= 393273) {
        return "4.6 RC 或更高版本";
    }
    if ((releaseKey >= 379893)) {
        return "4.5.2 或更高版本";
    }
    if ((releaseKey >= 378675)) {
        return "4.5.1 或更高版本";
    }
    if ((releaseKey >= 378389)) {
        return "4.5 或更高版本";
    }
    return "未检测到 4.5 或更高版本";
}</code>

Kaedah ini harus menentukan versi .NET Framework yang dipasang dengan lebih tepat, termasuk sokongan untuk 3.5 SP 1 dan lebih baru.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Versi Rangka Kerja .NET yang Dipasang dengan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn