Что это
Windows API Explorer — это skill для быстрого поиска и анализа Windows API (WinRT / WinMD) прямо внутри редактора, без ручного лазания по документации и без необходимости собирать проект. Он идеально подходит, когда вы пишете код под Windows (десктопные приложения на C++/WinRT, C# с WinUI, UWP, WinAppSDK) и хотите точно знать, какой тип, метод или свойство использовать для конкретной задачи — камера, файлы, уведомления, UI-элементы, сенсоры, AI/ML, сеть и т.д.
Skill не обращается к Microsoft Learn в реальном времени, а работает с локальным кешем метаданных (winmd-файлы), в котором уже есть:
- Все
Windows.* API (Platform SDK) и Microsoft.* WinAppSDK — всегда, без восстановления проекта.
- WinUI — всегда, без восстановления.
- Дополнительные NuGet-пакеты и собственные WinMD из сборки проекта (после
dotnet restore / сборки).
Это значит, что даже на свежем клоне репозитория вы сразу получаете полную информацию о десятках тысяч типов.
Как работает
Skill предоставляет два основных сценария через PowerShell-скрипты в репозитории:
1. Поиск («Не знаю, какой API использовать»)
Пользователь описывает нужную возможность своими словами — skill переводит это в ключевые слова для поиска и запускает:
- Invoke-WinMdQuery.ps1 -Action search -Query "<keyword>"
Он возвращает ранжированные неймспейсы с наиболее подходящими типами, а также путь к JSON-файлу этого неймспейса.
Пример: пользователь хочет «сделать фото» — skill пробует ключевые слова camera, capture, photo, MediaCapture.
Затем skill читает этот JSON (все члены типа, сигнатуры, параметры, перечисления) и выбирает подходящий API. Если результаты поиска по локальному кешу плохие (score <60 или нерелевантные), рекомендуется переключиться на веб-поиск по Microsoft Learn (skill подсказывает URL-шаблоны для Windows.* и Microsoft.*). После того как тип найден, возвращаются к локальному кешу для получения точных сигнатур.
2. Прямой запрос («Я знаю тип, покажи детали»)
Если имя типа уже известно (частично или полностью), можно сразу запросить его структуру:
- -Action members — все члены (методы, свойства, события, поля)
- -Action enums — значения перечисления
- -Action types — список типов в неймспейсе
- -Action namespaces — просмотр всех неймспейсов по фильтру
- -Action projects / -Action packages / -Action stats — служебные запросы
Важные детали перед первым использованием
Перед любыми запросами нужно сгенерировать кеш запуском скрипта:
./.github/skills/winmd-api-search/scripts/Update-WinMdCache.ps1
# или для одного проекта:
./.github/skills/winmd-api-search/scripts/Update-WinMdCache.ps1 -ProjectDir <папка_проекта>
Скрипт читает локально установленные SDK (Platform SDK, WinAppSDK), а также project.assets.json после dotnet restore для NuGet-пакетов. Кеш сохраняется в Generated Files\winmd-cache\, дедублицируется по пакет+версия. Эту папку нужно добавить в .gitignore.
Поиск использует скоринг по вхождению ключевых слов в имена типов и членов (100 — точное совпадение, 80 — начинается с, 60 — содержит, 50 — инициалы PascalCase, 40 — AND-логика, 20 — fuzzy).
Когда использовать
- Вы пишете десктопный код под Windows (C++/WinRT, C#, WinUI, UWP, WinAppSDK) и не можете вспомнить точное имя API.
- Нужно быстро проверить сигнатуру метода или свойства, не открывая браузер.
- Вы сомневаетесь, какой элемент управления (например,
NavigationView vs TabView) подходит для задачи.
- Нужно узнать все значения перечисления (например,
Visibility или FlyoutPlacementMode).
- Вы работаете в репозитории, где уже есть dependent проекты, и хотите индексировать их собственные WinMD-типы.
Важно знать
- Кеш содержит только сигнатуры (имена, параметры, типы), без описаний и примеров. Для полного понимания API всегда нужно обращаться к Microsoft Learn по URL-шаблону:
https://learn.microsoft.com/uwp/api/{полное.имя.типа} для Windows.* или https://learn.microsoft.com/windows/windows-app-sdk/api/winrt/{полное.имя.типа} для Microsoft.*.
- При нескольких закешированных проектах нужно указывать
-Project <имя>. Список доступных проектов даёт -Action projects.
- Если после обновления NuGet-пакетов кеш устарел — просто перезапустите
Update-WinMdCache.ps1.
- Для работы скриптов требуется .NET SDK 8.0 или новее (установка с dotnet.microsoft.com).
- Skill явно рекомендует в случае неудачного поиска (низких скорингов) использовать веб-поиск с конструкцией
site:learn.microsoft.com/uwp/api <ключевые_слова>, чтобы найти нужный тип, а затем вернуться к локальному запросу -Action members для получения точной сигнатуры.
Комментарии
Комментариев пока нет. Будьте первым.