如何确定是否安装了 .Net 5 运行时? [英] How can I determine if the .Net 5 runtime is installed?

查看:96
本文介绍了如何确定是否安装了 .Net 5 运行时?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我安装了 .NET 5.0 预览版 SDK 和运行时.

I installed .NET 5.0 preview SDK and runtime.

如何检测/确定 .Net 5 运行时是否安装在 C# 中?

How do I detect/determine if the .Net 5 runtime is installed from in C# ?

推荐答案

这里有一些错误:

  1. .NET 5 不是 .NET Framework 的一个版本,它是 .NET Core 的下一个版本(来源)
  2. 如果您的应用程序是针对 .NET 5 编译的,而您尝试运行的计算机没有安装 .NET 5,那么您的应用程序将无法启动(将其想象为尝试运行编译的应用程序对于仅安装了 .NET Framework 3.5 的计算机上的 .NET Framework 4.8)*
  1. .NET 5 is not a version of .NET Framework, it is the next version of .NET Core (source)
  2. If your app is compiled against .NET 5, and the computer you're trying to run on does not have .NET 5 installed, then your app simply won't launch (think of it like trying to run an application compiled for .NET Framework 4.8 on a computer which only has .NET Framework 3.5 installed)*

由于 .NET 5 是 .NET Core 的下一个版本,您可以轻松使用新的(在 Core 3.0 中)API

And as .NET 5 is the next version of .NET Core, you can easily use the new (in Core 3.0) APIs

var netVersion = System.Environment.Version;
var runtimeVer = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;

正如您在原始问题中提到的,您正在阅读用于获取 .NET Framework 版本的注册表项(我假设是 so).那么指定安装的 .NET Core 版本的密钥的位置位于不同的位置,即 HKEY_LOCAL_MACHINESOFTWAREdotnetSetupInstalledVersions.您可以通过以下方式阅读它们:

As mentioned in your original question, you are reading the registry keys for getting the .NET Framework versions (I'm assuming à la so). Well the location for the keys that specify the .NET Core versions installed are located in a different place, namely HKEY_LOCAL_MACHINESOFTWAREdotnetSetupInstalledVersions. Here is how you could read them:

const string subkey = @"SOFTWAREdotnetSetupInstalledVersions";
var baseKey = Registry.LocalMachine.OpenSubKey(subkey);
if (baseKey.SubKeyCount == 0)
    return;

foreach (var platformKey in baseKey.GetSubKeyNames())
{
    using (var platform = baseKey.OpenSubKey(platformKey))
    {
        Console.WriteLine($"Platform: {platform.Name.Substring(platform.Name.LastIndexOf("\") + 1)}");
        if (platform.SubKeyCount == 0)
            continue;

        var sharedHost = platform.OpenSubKey("sharedhost");
        foreach (var version in sharedHost.GetValueNames())
            Console.WriteLine("{0,-8}: {1}", version, sharedHost.GetValue(version));
    }
}


* 预计如果您使用 self-contained 编译您的应用程序,它会将运行时与您的应用程序捆绑在一起


* Expect if you compile your application with self-contained which will bundle the runtime together with your app

这篇关于如何确定是否安装了 .Net 5 运行时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆