微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我需要一个解决方案来为我提供完整框架和.NET Core的.NET运行时版本.

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

Full: 4.7.2
Core: 2.1.104

运行:

Runtime@R_917_404[email protected]

给我:

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.Setup@R_917_404[email protected];

对于.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库.我怀疑将会有一个很好的方法来全面了解给定执行组件集合背后的所有目标……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐