如何确定是否安装了 .Net 5 运行时?

2024-04-26

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

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


这里有一些错误:

  1. .NET 5 是not.NET Framework 的一个版本,它是下一个版本.NET核心 (source https://devblogs.microsoft.com/dotnet/introducing-net-5/)
  2. 如果您的应用程序是针对 .NET 5 编译的,并且您尝试运行的计算机没有安装 .NET 5,那么您的应用程序根本无法启动(可以将其想象为尝试运行为 .NET 编译的应用程序)仅安装 .NET Framework 3.5 的计算机上的 Framework 4.8)*

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

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

正如您最初的问题中所提到的,您正在阅读注册表项以获取 .NET Framework 版本(我假设so https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed)。那么指定安装的 .NET Core 版本的密钥位置位于不同的位置,即HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions。您可以通过以下方式阅读它们:

const string subkey = @"SOFTWARE\dotnet\Setup\InstalledVersions";
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它将运行时与您的应用程序捆绑在一起

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确定是否安装了 .Net 5 运行时? 的相关文章

随机推荐

  • B2C认证不返回access_token

    我正在尝试使用 PKCE 一个有角度的项目来实现授权代码流 我正在使用 angular auth oidc client 我们已经有一个基于 IdentityServer4 的现有内部实施 客户端可以很好地配合该实施 但我们现在正在尝试将身
  • 您的应用程序正在使用具有不安全的 openFile 实现的内容提供程序

    在 Playstore 上发布我的应用程序后 我收到了这封电子邮件 您好 Google Play 开发者 我们审查了包名为 com example myappname 的 MyAppName 发现您的应用使用的软件包含用户安全漏洞 具有这些
  • 相机 API:跨设备问题

    我正在开发一个相机应用程序 基本上作为消息传递应用程序的一部分来附加图像等 该应用程序需要适用于 gt SDK 2 2 并且 I can t尽可能多地使用默认的 Android 相机 因为 该应用程序的性质决定了图像不应保存到磁盘上 一些
  • 如何测量 Hotspot 元空间中的碎片?

    我正在研究调试应用程序中的 OutOfMemoryError Metaspace 错误 在 OOME 之前 我在 gc 日志中看到以下内容 Heap before GC invocations 6104 full 39 par new ge
  • Django 使用 update() 模拟模型上的存储抛出错误

    我有一个小项目 正在进行一些测试 最近我问了一个问题 django test mocked imagefield 防止 上传 或 测试后清理 https stackoverflow com questions 42266305 django
  • 当 python 添加小整数时,幕后会发生什么? [复制]

    这个问题在这里已经有答案了 我正在摆弄id最近意识到 c Python 做了一些非常明智的事情 它确保小整数始终具有相同的值id gt gt gt a b c d e 1 2 3 4 5 gt gt gt f g h i j 1 2 3 4
  • 如何在 git tag 消息中包含换行符

    当我在 git 中标记版本化代码时 我喜欢在标记消息中使用项目符号点 这可以通过带注释的标签轻松完成 git tag a v1 0 0 Change number 1 Change number 2 Write a tag message
  • 媒体播放器准备时的进度条

    我试图弄清楚如何在我的媒体播放器准备流文件时显示 正在加载 请稍候 的进度条 现在发生的事情是在歌曲准备好后显示 我怎样才能解决这个问题 mediaPlayerLoadingBar ProgressDialog show PlaylistA
  • Java更改系统换行符

    在 Windows 上 使用System out println 打印出来 n r而在 Unix 系统上你会得到 n 有没有办法告诉java你想使用什么换行符 正如其他人已经说过的 系统属性line separator包含实际的行分隔符 奇
  • 什么是 IOS Safari 最大网页宽度限制(显示错误 --> 重复出现问题)

    2022 年 在最新的 ios 上 iOS Safari 在我的网站主页上崩溃 我无法弄清楚确切的问题 我的主页目前是一个仅限桌面的网站 在 Android 和 Windows 上加载快速且良好 但在 ios 14 15 中显示错误 重复出
  • 在 Python 中如何确定 IP 地址是否私有?

    在 Python 中 确定 IP 地址 例如 127 0 0 1 or 10 98 76 6 是在专用网络 http en wikipedia org wiki Private network 代码听起来并不难写 但可能存在比立即显而易见的
  • 在 Typescript 中获取泛型类型参数的名称

    是否可以在打字稿中获取泛型类型参数的名称 有这个方法 getName
  • 更新或删除的行值要么不会使该行唯一,要么会更改多行

    我想删除行 但收到 此错误 更新或删除的行值不会使该行唯一 或者 他们改变多行 您的表中有重复的行 在这种情况下 您无法使用 UI 编辑表 首先使用 SQL 删除具有匹配数据的行 然后尝试进行编辑 逐一删除具有匹配数据的行 直到只剩下一行
  • 在作曲家中,我必须在 require 之前使用 init 吗?

    我对命令有点困惑composer init and composer require 如果我是对的 如果我想从 packagist 添加一个库到我的项目中 我需要使用require 如果我想将我的库发布到 packagist 我需要使用in
  • 使用 Android 实现 Bouncy Castle 密码算法

    我如何使用 Bouncy Castle 提供程序来实现 Serpent 和 Twofish 等算法 因为 Sun 的提供程序根本不实现这些 我知道当多个提供商可以实现相同的算法时 您可以从排名最高的提供商 即 Sun 提供商 获得实现 如果
  • Django 无效的 HTTP_HOST 标头:“testserver”。您可能需要将 u'testserver' 添加到 ALLOWED_HOSTS

    我开始学习 Django 我正在实现 测试视图 功能 当我使用测试客户端在shell中 异常发生如下 无效的 HTTP HOST 标头 testserver 您可能需要将 u testserver 添加到 ALLOWED HOSTS 我在
  • 是否可以使用数组中存储的关键字执行 grep 操作?

    是否可以使用存储在数组中的关键字执行 grep 操作 这是可能的代码片段 我该如何纠正它 args key1 key2 key3 cat file name while read line echo line grep q w args c
  • 安卓天文台表

    如何以默认 00 00 以外的特定时间启动计时器 是否可以设置 chronometerObj setBase startTime ch setBase SystemClock elapsedRealtime anylongvalue ch
  • 将 Postgres 自动增量值重置为 0

    我有一个表 有时我会在内联编辑器中输入数据 在其中手动添加通常自动递增的 id 值 在使用脚本自动生成 id 4 然后内联添加 id 5 和 6 的情况下 每当我运行插入查询时 数据库都会尝试自动递增值 4 但是值 5 已由用户添加到数据库
  • 如何确定是否安装了 .Net 5 运行时?

    我安装了 NET 5 0 预览版 SDK 和运行时 如何检测 确定 Net 5 运行时是否是从 C 安装的 这里有一些错误 NET 5 是not NET Framework 的一个版本 它是下一个版本 NET核心 source https