Remove vendored Command Palette SDK - #31
Merged
Merged
Conversation
Drop the committed tools/cmdpal-sdk DLL/winmd and the build-msix.ps1 override that swapped them into the package. Build against the plain NuGet Microsoft.CommandPalette.Extensions package instead. The override was assumed to be load-bearing for WinRT IID matching, but the IIDs in the NuGet package already match the CmdPal host. What the override actually provided was Microsoft.CommandPalette.Extensions.winmd in the package — the host builds the cross-process IExtension proxy from that metadata, and without it activation fails with E_NOINTERFACE and the extension loads with no commands. The SDK package marks the winmd CopyToOutputDirectory but not CopyToPublishDirectory, so dotnet publish drops it. Add the IncludeCmdPalSdkWinmdInPublish target to force it into the publish output.
nickknissen
force-pushed
the
remove-vendored-cmdpal-sdk
branch
from
June 2, 2026 05:58
5e47714 to
d6e2740
Compare
This was referenced Aug 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The CmdPal host builds the cross-process IExtension proxy from the SDK's interface metadata, so
Microsoft.CommandPalette.Extensions.winmdmust ship in the package — otherwise activation fails with E_NOINTERFACE (0x80004002) and the extension loads with no commands.The previous approach vendored the DLL/winmd in
tools/cmdpal-sdkand swapped them in at pack time, assuming it was load-bearing for WinRT IID matching. It isn't — the NuGet package IIDs already match the host. The only thing the override actually provided was the winmd in the package.This PR removes the vendoring and replaces it with the
IncludeCmdPalSdkWinmdInPublishcsproj target, which forces the NuGet-provided winmd into the publish output (the SDK package marks it CopyToOutputDirectory but not CopyToPublishDirectory, sodotnet publishotherwise drops it).Built the unsigned MSIX and verified both the DLL and the winmd are present at the package root.
Note: not yet smoke-tested in CmdPal — recommend a quick dev-deploy before merge.