用途:在需要选用 Windows 平台能力时,帮助定位合适的 API,并获取类型、成员、签名与枚举值的完整细节,覆盖相机、文件访问、通知、传感器、UI 控件、AI/ML 等场景。
主要能力:搜索本地 WinMD 元数据缓存,索引来源包括 Windows Platform SDK(Windows.* WinRT API,始终可用)、WinAppSDK/WinUI 基线(始终可用)、已还原项目中含 .winmd 的 NuGet 包、项目构建输出的 .winmd(C++/WinRT、C# 类库)。即使全新克隆、未还原未构建,也能获得完整 Platform SDK + WinAppSDK 覆盖。搜索按名称匹配度评分(精确 100、前缀 80、包含 60、PascalCase 首字母 50、多关键词 AND 40、模糊 20),结果按命名空间分组。
使用方式:先安装 .NET SDK 8.0 或更高版本,并生成缓存。生成全部项目缓存:..github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1;生成单项目缓存:..github\skills\winmd-api-search\scripts\Update-WinMdCache.ps1 -ProjectDir <project-folder>。基线覆盖无需还原或构建;附加 NuGet 包需 dotnet restore 或 packages.config。缓存位于 Generated Files\winmd-cache\,按包与版本去重,建议加入 .gitignore。
常用查询:搜索 ..github\skills\winmd-api-search\scripts\Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>";已知类型查成员 -Action members -TypeName "Microsoft.UI.Xaml.Controls.NavigationView";查枚举 -Action enums -TypeName "Microsoft.UI.Xaml.Visibility";列命名空间类型 -Action types -Namespace "Microsoft.UI.Xaml.Controls";浏览命名空间 -Action namespaces -Filter "Microsoft.UI";另有 projects、packages、stats。多项目缓存时用 -Project <name> 指定。
限制:缓存只含签名,不含描述与用法说明,需结合 Microsoft Learn 官方文档查看解释和示例(Windows.* 用 https://learn.microsoft.com/uwp/api/{fully.qualified.typename},Microsoft.* 用 https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/{fully.qualified.typename})。搜索结果评分低于 60 或不相关时,建议改用网络搜索定位 API。NuGet 更新后需重新生成缓存;类型需使用完全限定名。
适用场景:不确定用哪个控件、类或接口完成 UI 或系统任务;写代码前需要确切的属性、方法、事件或枚举值。