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

前端之家收集整理的这篇文章主要介绍了c# – 如何以编程方式找到.NET运行时版本?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要一个解决方案来为我提供完整框架和.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库.我怀疑将会有一个很好的方法来全面了解给定执行组件集合背后的所有目标……

猜你在找的C#相关文章