Déterminer efficacement la version de .NET Framework
La vérification des versions de .NET Framework, en particulier 3.5 SP 1, est une exigence courante pour les développeurs. Cependant, le simple fait d'utiliser Environment.Version()
pour obtenir ces informations ne vous permet d'obtenir que la version de base, en laissant de côté les détails importants tels que les service packs.
Pour ce faire, plusieurs méthodes existent :
Pour .NET 1-4
Une méthode simple et efficace consiste à récupérer les données directement à partir du registre. Pour les versions .NET 1 à 4, vous pouvez utiliser l'extrait de code suivant :
<code class="language-csharp">RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP"); string[] version_names = installed_versions.GetSubKeyNames(); // version names 以 'v' 开头,例如 'v3.5',在转换前需要去除 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>
Dans ce code, la variable "Framework" représente la version installée la plus élevée et "SP" contient le numéro de service pack associé.
Pour .NET 4.5
Pour les versions 4.5 et supérieures, la documentation officielle de Microsoft recommande la méthode suivante :
<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 或更高版本"; } // 此行不应该执行。非空 release 密钥应该意味着 // 已安装 4.5 或更高版本。 return "未检测到 4.5 或更高版本"; }</code>
Ce code utilise le registre pour déterminer la version installée du .NET Framework et son service pack correspondant.
Grâce à ces technologies, les développeurs peuvent déterminer rapidement et précisément la version de .NET Framework installée, ce qui leur permet de prendre des décisions éclairées et d'assurer la compatibilité avec leurs applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!