Files
awesome-copilot/skills/winmd-api-search/scripts/cache-generator/CacheGenerator.csproj
Gordon Lam f91c1a5b4b feat: add winmd-api-search skill for Windows desktop API discovery (#860)
* feat: add winmd-api-search skill for Windows desktop API discovery

Add a skill that helps find and explore Windows desktop APIs (WinRT/WinAppSDK).
It searches a local WinMD metadata cache to discover APIs for platform capabilities
like camera, file access, notifications, UI controls, AI/ML, sensors, and networking.

Includes bundled scripts:
- Update-WinMdCache.ps1: generates the JSON cache from SDK and NuGet packages
- Invoke-WinMdQuery.ps1: searches types, members, enums, and namespaces
- cache-generator: .NET tool that parses WinMD files into JSON

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: sync winmd-api-search with latest upstream changes

Updates from PowerToys source branch:
- Detect installed WinAppSDK runtime via Get-AppxPackage
- Respect NUGET_PACKAGES env var for global packages path
- Use OS architecture for runtime package detection
- Fix method/event visibility to use MemberAccessMask equality
- Fix EnumerationOptions, TypeSpecification decoding, search sort
- Robust scan with case-insensitive dedup and multi-path search
- Deduplicate packages by (Id, Version)
- Fix assets.json selection and pin SRM version
- Fix SDK version sorting and global namespace handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: remove en-us locale from Microsoft Learn URLs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: filter assets.json by package type; unique scan-mode manifests

- Filter assets.json libraries by type==package to skip project references
- Append short path hash to manifest names in scan mode to avoid collisions
- Support prefix match in query script for scan-mode manifest names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-04 09:37:13 +11:00

30 lines
1.4 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<!-- Default fallback; Update-WinMdCache.ps1 overrides via -p:TargetFramework=net{X}.0 -->
<TargetFramework Condition="'$(TargetFramework)' == ''">net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<!-- System.Reflection.Metadata is inbox in net9.0+, only needed for net8.0 -->
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="System.Reflection.Metadata" Version="8.0.1" />
</ItemGroup>
<!--
Baseline WinAppSDK packages: downloaded during restore so the cache generator
can always index WinAppSDK APIs, even if the target project hasn't been restored.
ExcludeAssets="all" means they're downloaded but don't affect this tool's build.
When the repo has a known version (passed via -p:WinAppSdkVersion=X.Y.Z from
Update-WinMdCache.ps1), prefer that version to avoid unnecessary NuGet downloads.
Falls back to Version="*" (latest) on fresh clones with no restore.
-->
<ItemGroup Condition="'$(WinAppSdkVersion)' != ''">
<PackageReference Include="Microsoft.WindowsAppSDK" Version="$(WinAppSdkVersion)" ExcludeAssets="all" />
</ItemGroup>
<ItemGroup Condition="'$(WinAppSdkVersion)' == ''">
<PackageReference Include="Microsoft.WindowsAppSDK" Version="*" ExcludeAssets="all" />
</ItemGroup>
</Project>