Interactive Extension Testing
Read .github/copilot-instructions.md "Build, Lint, and Test" and "PSES and Cross-Repo Work" first — this skill only adds the worktree setup details for hands-on F5 testing.
Use this when the goal is to open pwsh-extension-dev.code-workspace and run
F5 → Launch Extension against a locally-built PowerShellEditorServices (PSES).
Prerequisites
- Follow
.github/copilot-instructions.mdfor the repository build dependencies and themodules/symlink model. - Confirm these commands are available:
pwsh,dotnet,code, and the PowerShellInvokeBuildmodule. - Have a PSES checkout that can be used as
<pses-checkout>.
Setup
Build PSES first. In
<pses-checkout>, run the PSES build task (for example,Invoke-Build Build) so<pses-checkout>/module/PowerShellEditorServices/binexists. Without that directory, the extensionBuildtask invscode-powershell.build.ps1assertsExtension requires PSES.Ensure the workspace can resolve the Server root. The workspace defines
Clientas<extension-repo>andServeras../PowerShellEditorServices, so a worktree parent may need a sibling link:ln -s <pses-checkout> <extension-repo-parent>/PowerShellEditorServicesEnsure the extension can load the runtime PSES module.
modules/is gitignored and should point at the built PSES module directory:ln -s <pses-checkout>/module <extension-repo>/modulesIn a normal sibling clone,
Invoke-Build RestoreEditorServicesinvscode-powershell.build.ps1creates thismoduleslink and builds PSES. In a worktree or fresh checkout, create the sibling link first ifGet-EditorServicesPathcannot resolve../PowerShellEditorServices/PowerShellEditorServices.build.ps1.Open the dev workspace:
cd <extension-repo> code pwsh-extension-dev.code-workspaceLaunch interactively. In VS Code, use F5 → Launch Extension. The workspace also defines
Launch Extension - Temp Profile; seepwsh-extension-dev.code-workspacefor the current launch/task wiring.
Verify
cd <extension-repo>
readlink modules
test -d modules/PowerShellEditorServices/bin
Then confirm F5 starts the extension host and attaches to PSES.
Cleanup
Both links are reversible and not under version control: modules is gitignored, and the
sibling PowerShellEditorServices link lives outside <extension-repo>. Cleanup is just:
rm <extension-repo>/modules
rm <extension-repo-parent>/PowerShellEditorServices
How It Resolves
Use pwsh-extension-dev.code-workspace as the source of truth for roots and launch
configs. Use Get-EditorServicesPath, RestoreEditorServices, and Build in
vscode-powershell.build.ps1 as the source of truth for how the extension locates,
links, builds, and asserts the local PSES module.