diff --git a/src/BuiltInTools/dotnet-watch/Watch/DotNetWatcher.cs b/src/BuiltInTools/dotnet-watch/Watch/DotNetWatcher.cs index b6fb10c29286..47909070034c 100644 --- a/src/BuiltInTools/dotnet-watch/Watch/DotNetWatcher.cs +++ b/src/BuiltInTools/dotnet-watch/Watch/DotNetWatcher.cs @@ -59,7 +59,8 @@ public static async Task WatchAsync(DotNetWatchContext context, CancellationToke { [EnvironmentVariables.Names.DotnetWatch] = "1", [EnvironmentVariables.Names.DotnetWatchIteration] = (iteration + 1).ToString(CultureInfo.InvariantCulture), - } + }, + OnOutput = line => context.ProcessOutputReporter.ReportOutput(line) }; var browserRefreshServer = projectRootNode != null && HotReloadAppModel.InferFromProject(context, projectRootNode) is WebApplicationAppModel webAppModel diff --git a/test/dotnet-watch.Tests/Watch/NoDepsAppTests.cs b/test/dotnet-watch.Tests/Watch/NoDepsAppTests.cs index fe93ef940c90..98d865d207ca 100644 --- a/test/dotnet-watch.Tests/Watch/NoDepsAppTests.cs +++ b/test/dotnet-watch.Tests/Watch/NoDepsAppTests.cs @@ -48,5 +48,19 @@ public async Task RestartProcessThatTerminatesAfterFileChange() Assert.NotEqual(processIdentifier, processIdentifier2); await App.AssertExiting(); // process should exit after run } + + [Fact] + public async Task CapturesStdOutWithNoHotReload() + { + var testAsset = TestAssets.CopyTestAsset(AppName) + .WithSource(); + + App.Start(testAsset, ["--no-hot-reload"]); + + // Verify stdout is captured - application prints "Started" and "Process identifier" + await App.AssertOutputLineStartsWith("Started"); + await App.AssertOutputLineStartsWith("Process identifier ="); + await App.AssertExiting(); + } } }