我需要一个解决方案来为我提供完整框架和.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
解决方法
目前还没有一种统一的方法可以做到这一点,尽管您可以跟踪此
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库.我怀疑将会有一个很好的方法来全面了解给定执行组件集合背后的所有目标……