Repository navigation
[SE-ACTIONS-ARGS] Build/Run extra arguments are specified but entirely unimplemented #271
Description
[SE-ACTIONS-BUILD] and [SE-ACTIONS-ARGS] specify configurable extra arguments for build and run. None of it exists — not the settings, not the commands, not the storage.
Found while fixing "Build Solution does nothing" (the presentation half of [SE-ACTIONS-BUILD], fixed in 6178ecd1). The argument half is missing functionality rather than a regression, so it is filed here instead of being bolted onto that fix.
What the spec requires
[SE-ACTIONS-BUILD]:
- On solution:
dotnet build <solution.sln|solution.slnx>with configured extra args - On project:
dotnet build <project.csproj>with configured extra args
[SE-ACTIONS-ARGS]:
| Required | Exists today |
|---|---|
sharplsp.configureBuildArgs command ("Configure Build Arguments...") |
❌ no such command |
sharplsp.configureRunArgs command ("Configure Run Arguments...") |
❌ no such command |
sharplsp.build.extraArgs setting |
❌ not in contributes.configuration |
sharplsp.run.extraArgs setting |
❌ not in contributes.configuration |
sharplsp.test.extraArgs setting |
❌ not in contributes.configuration |
Workspace state sharplsp.buildArgs.${projectPath} |
❌ never read or written |
Workspace state sharplsp.runArgs.${projectPath} |
❌ never read or written |
Menu group 9_configure on solution and project nodes |
❌ no such group in menus |
| Precedence: per-project > global setting > none | ❌ nothing to order |
dotnetArgs() in src/editors/vscode/src/build.ts builds the whole command line from the verb and the target and consults no configuration at all. The only extraArgs settings the manifest declares are sharplsp.server.extraArgs and sharplsp.fsi.extraArgs, which are unrelated.
Why it matters
A user who needs -c Release, -p:Configuration=Release, --no-restore, a custom -p:Platform, or any MSBuild property cannot get it through the Solution Explorer at all. They have to leave it and hand-write a tasks.json entry — which is exactly the proprietary-tooling gap SharpLsp exists to close. Release builds from the tree are simply unavailable.
Suggested shape
- Declare
sharplsp.build.extraArgs,sharplsp.run.extraArgs,sharplsp.test.extraArgsasstring[]incontributes.configuration. - Add
sharplsp.configureBuildArgs/sharplsp.configureRunArgs, contributed toview/item/contextunder group9_configureforviewItem =~ /^(solution|project)$/(run:projectonly), writingworkspaceState. - Resolve with the spec's precedence — per-project, then global setting, then none — and append in
dotnetArgs()so every dispatch path inherits it. - Cover it with spec-derived assertions in
solution-explorer-build.test.ts, which already owns[SE-ACTIONS-BUILD].
Note on coverage
Before 6178ecd1, [SE-ACTIONS-BUILD] had zero implementation citations and zero test coverage anywhere in the suite, which is how the presentation drifted to invisible without any gate noticing. A sweep for spec IDs with no citing code or test would likely surface more of these before release.
Activity