加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何以编程方式找到.NET运行时版本?

发布时间:2020-12-15 08:14:42 所属栏目:百科 来源:网络整理
导读:我需要一个解决方案来为我提供完整框架和.NET Core的.NET运行时版本. 在具有以下.NET版本的计算机上: Full: 4.7.2Core: 2.1.104 运行: RuntimeInformation.FrameworkDescription 给我: Full: .NET Framework 4.7.2558.0Core: .NET Core 4.6.26212.01 运行
我需要一个解决方案来为我提供完整框架和.NET Core的.NET运行时版本.

在具有以下.NET版本的计算机上:

Full: 4.7.2
Core: 2.1.104

运行:

RuntimeInformation.FrameworkDescription

给我:

Full: .NET Framework 4.7.2558.0
Core: .NET Core 4.6.26212.01

运行:

Environment.Version

给我:

Full: 4.0.30319.42000
Core: 4.0.30319.42000

如何知道在Windows之外无法使用注册表选项,我如何准确地获取跨不同平台的运行时版本.

解决方法

目前还没有一种统一的方法可以做到这一点,尽管您可以跟踪此 here的开放请求.如果您点击引用该讨论的各种问题以及下游引用的问题,您会发现现在某些实施中也存在一些错误,但是有积极的工作(其中一个问题有相关的签到8小时前).

对于.NET Framework:

using System;
...
string ver = AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName;

对于.NET Core:

using System.Reflection;
using System.Runtime.Versioning;
...
string ver = Assembly.GetEntryAssembly()?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName;

输出:

.NETFramework,Version=v4.5.1
.NETCoreApp,Version=v2.0

显然,这些都是以编程方式使用的麻烦,因此需要更好的API(包括Microsoft的this开放问题,讨论专门针对最小目标框架测试的新API).

可能永远不可能的另一个难题是给定的应用程序可以引用许多目标.例如,您可能会使用.NET Standard 2.x和.NET Standard 1.x库.我怀疑将会有一个很好的方法来全面了解给定执行组件集合背后的所有目标……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读