如何确定运行.NET Standard类库的.NET平台?该检测方法是否可靠?
针对.NET Framework和.NET Core,该方法是可靠的
这个判断逻辑在区分.NET Framework和.NET Core(以及后续的.NET 5/6/7/8等统一平台)时是完全可靠的,原因如下:
- .NET Framework 的行为:
System.AppContext.TargetFrameworkName属性会明确返回目标框架标识字符串,比如你示例中的NETFramework,Version=v4.6.1,从.NET Framework 4.5开始这个属性就稳定存在并返回正确值。 - .NET Core/.NET 5+ 的行为:在这些平台中,该属性始终返回
null,因为它们的运行时模型和.NET Framework不同,不会将目标框架信息注入到这个属性中。
你提供的判断代码可以放心使用,这里再整理成规范的代码块:
using System; if (string.IsNullOrWhiteSpace(System.AppContext.TargetFrameworkName)) { // 当前运行在 .NET Core/.NET 5+ 平台(至少不是 .NET Framework) } else { // 当前运行在 .NET Framework 平台 }
不过如果后续需要扩展检测其他.NET平台(比如Xamarin、Unity等),这个方法可能不够用,但仅针对你提到的.NET Framework和.NET Core这两个场景,它是完全可靠的。
内容的提问来源于stack exchange,提问作者Vadim Loboda
相关产品推荐
相关产品推荐

