You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET如何获取运行程序集对应二进制路径中的目标框架标识?

获取程序集的Target Framework标识(如net7.0)

可以从运行的程序集中可靠获取到对应的Target Framework标识,不需要依赖模糊的字符串替换操作,正确的做法是解析TargetFrameworkAttribute的标准属性值:

  • 首先获取属性实例:
var targetFrameworkAttr = Assembly.GetExecutingAssembly()
    .GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false)
    .Cast<System.Runtime.Versioning.TargetFrameworkAttribute>()
    .SingleOrDefault();
  • 解析标准格式的属性值:
    TargetFrameworkAttribute的FrameworkName属性遵循固定规范,比如.NET 7对应的属性值是.NETCoreApp,Version=v7.0,我们可以用FrameworkName类来解析它,生成你需要的net7.0格式字符串:
if (targetFrameworkAttr != null)
{
    var frameworkName = new System.Runtime.Versioning.FrameworkName(targetFrameworkAttr.FrameworkName);
    var targetFramework = $"net{frameworkName.Version.Major}.{frameworkName.Version.Minor}";
    // 此时targetFramework即为"net7.0"
}

为什么不推荐直接字符串替换?

虽然去除空格转小写能临时匹配,但不同框架的属性格式有差异(比如.NET Framework的属性值是.NETFramework,Version=v4.8,对应标识是net48),用FrameworkName类解析能适配所有框架类型和版本,避免因格式变动导致的匹配失效。

内容的提问来源于stack exchange,提问作者Ilya Chernomordik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:18:10