用途:这是 .NET 开发的前置技能,先检测项目 .NET 版本信息,再据此适配后续所有 .NET 技能的指导,属于被 dotnet-advisor 及几乎所有专项技能引用的跨领域技能。
主要能力:按优先级检测目标框架(TFM)。优先读取最近的 .csproj 中的直接 <TargetFramework> 字面量;其次读取 <TargetFrameworks>(多目标),并以最高 TFM 作为指导依据;再到当前目录或父目录至解决方案根读取 Directory.Build.props 的共享 TFM;若为 MSBuild 属性表达式则发出未解析警告并回退。回退顺序为 global.json 的 SDK 版本(如 10.0.100 映射 net10.0),再回退 dotnet --version。确定 TFM 后还额外检查 global.json 的 SDK 版本与 rollForward 策略、<LangVersion>(preview/latest/显式版本)、预览功能开关 EnablePreviewFeatures 与 runtime-async 特性标志,以及多目标的 LTS/STS/预览与支持结束情况。最终以结构化格式输出 TFM、最高 TFM、C# 版本、SDK 版本、预览功能、Runtime-Async 与警告,并给出相应指导。同样适用于 .fsproj 与 .vbproj。
使用方式:作为技能自动运行,按上述优先级扫描文件;检测结果按项目(每个 .csproj 路径)缓存,在切换项目、用户要求重新检测,或 .csproj、Directory.Build.props、global.json 被修改时重新检测。
适用场景:开始任何 .NET 开发工作前确定版本,以便按版本选用语言特性与 API;多目标项目按最高 TFM 指导并为低版本提供 polyfill 建议(参考 dotnet-multi-targeting);识别预览特性与不一致配置。
限制:无法从静态分析解析 MSBuild 属性表达式时会回退并警告;当 .csproj 与 global.json 不一致时优先 .csproj 并告警;无 SDK 时报告需从 https://dot.net 安装,构建将失败;未找到项目或 SDK 时默认按 net10.0 指导。资料未提供具体价格或收费信息。