Stream project restore progress during winapp run - #789
Stream project restore progress during winapp run#789Nikola Metulev (nmetulev) wants to merge 15 commits into
Conversation
Build Metrics ReportBinary Sizes
Test Results✅ 4777 passed, 5 skipped out of 4782 tests in 830.8s (+13 tests, -28.1s vs. baseline) Test Coverage✅ 89.4% line coverage, 82.5% branch coverage · ✅ +0.1% vs. baseline CLI Startup Time53ms median (x64, Try This BuildInstalls the MSIX for your architecture, replacing any previously installed build. Needs the GitHub CLI — the command offers to install it and sign you in if it is missing. & ([scriptblock]::Create((irm https://github.com/ghraw/microsoft/winappCli/main/scripts/winapp-pr.ps1))) 789Switching between builds often?Put the tool on your PATH once: & ([scriptblock]::Create((irm https://github.com/ghraw/microsoft/winappCli/main/scripts/winapp-pr.ps1))) -AddToPathThen this build is just: winapp-pr 789Run Updated 2026-09-04 06:55:47 UTC · commit |
There was a problem hiding this comment.
Pull request overview
Streams project restore progress alongside build output while preserving stdout for structured and quiet modes.
Changes:
- Adds live restore streaming with terminal-aware output.
- Expands restore-path tests and fake service support.
- Documents restore and build output behavior.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
ProjectRunService.cs |
Streams pre-build restore output. |
ProjectRunServiceTests.cs |
Tests streamed and inherited restore paths. |
FakeDotNetService.cs |
Simulates streaming output in tests. |
docs/usage.md |
Documents project restore output. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
de57385 to
3c6fd63
Compare
Alexandre Zollinger Chohfi (azchohfi)
left a comment
There was a problem hiding this comment.
The direction here is right, and on a classic .sln this works exactly as intended — restore progress streams, --no-restore is set correctly on the build, and --json stdout stays pure.
One blocker: on .slnx solutions this now surfaces an error MSB4126 on runs that succeed. It's a pre-existing latent failure that the old buffered call was hiding, so the streaming change is doing its job — but the failure itself needs fixing rather than displaying, since .slnx is what dotnet new sln produces by default on .NET 10 and every WinUI/Reactor template trips the condition. Found it running a Microsoft.UI.Reactor app in a two-project solution.
Also a smaller one: --quiet isn't quiet anymore for the restore pass.
PR Review — nmetulev-improve-run-progress vs origin/mainDecisionChanges required — the restore-progress change creates two user-visible regressions: Must fixQuiet mode emits normal restore progress
Ignored restore failures look fatal
Non-blockingQuiet-mode documentation promises suppressed command lines
Redirected restore output is wrapped instead of streamed as plain lines
What was exercised
|
Zach Teutsch (zateutsch)
left a comment
There was a problem hiding this comment.
Review attached above.
Honor quiet verbosity during project restores, avoid duplicate verbose invocations, and document JSON and quiet routing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use scoped disposal for the JSON and quiet restore stderr capture writers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Zach Teutsch (@zateutsch) Addressed the review findings in the latest commits: quiet restores now use |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PR Review — nmetulev-improve-run-progress vs origin/mainDecisionChanges required — the new whole-solution restore can produce assets for a different MSBuild platform than the subsequent Must fixPlatform-less solution restore can poison the no-restore build
Non-blockingQuiet fallback warnings contradict the clean-stdout contract
What was exercised
|
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b54e905a-d32e-4e13-8c6d-4da7f9d80335
…nto nmetulev-improve-run-progress
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: b54e905a-d32e-4e13-8c6d-4da7f9d80335
Summary
dotnet restoreoutput, using dotnet's native terminal logger when interactive and raw line streaming when redirected--quietrestores quiet, preserve JSON stdout, redact displayed commands, and avoid duplicate verbose command outputPlatformfrom solution-scoped restores so configuration-free.slnxfiles do not emitMSB4126.slnxsample coverageValidation
ProjectRunServiceTestspassed in ReleaseWinUISolution.slnxrun restored, built, and launched withoutMSB4126; the solution restore omitted-p:Platformwhile the project build retained itgit diff --checkpassedEnvironment note
The complete
scripts\build-cli.ps1run reached NativeAOT publish but could not finish on this device because the Visual Studio Desktop Development for C++ linker workload is not installed.