diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md index 7d0c66625293f..4b6af32d6ea7e 100644 --- a/docs/core/compatibility/10.0.md +++ b/docs/core/compatibility/10.0.md @@ -111,6 +111,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af | [`dotnet package list` performs restore](sdk/10.0/dotnet-package-list-restore.md) | Behavioral change | Preview 4 | | [`dotnet restore` audits transitive packages](sdk/10.0/nugetaudit-transitive-packages.md) | Behavioral change | Preview 3 | | [`dotnet tool install --local` creates manifest by default](sdk/10.0/dotnet-tool-install-local-manifest.md) | Behavioral change | Preview 7 | +| [`dotnet watch` logs internal-facing messages to stderr instead of stdout](sdk/10.0/dotnet-watch-stderr.md) | Behavioral change | RC 2 | | [project.json not supported in `dotnet restore`](sdk/10.0/dotnet-restore-project-json-unsupported.md) | Source incompatible | Preview 7 | | [SHA-1 fingerprint support deprecated in `dotnet nuget sign`](sdk/10.0/dotnet-nuget-sign-sha1-deprecated.md) | Behavioral change | Preview 1 | | [MSBUILDCUSTOMBUILDEVENTWARNING escape hatch removed](sdk/10.0/custom-build-event-warning.md) | Behavioral change | Preview 1 | diff --git a/docs/core/compatibility/sdk/10.0/dotnet-watch-stderr.md b/docs/core/compatibility/sdk/10.0/dotnet-watch-stderr.md new file mode 100644 index 0000000000000..b725b6052179f --- /dev/null +++ b/docs/core/compatibility/sdk/10.0/dotnet-watch-stderr.md @@ -0,0 +1,42 @@ +--- +title: "Breaking change: 'dotnet watch' logs internal-facing messages to stderr instead of stdout" +description: "Learn about the breaking change in .NET 10 RC 2 where 'dotnet watch' emits its log messages to stderr instead of stdout." +ms.date: 01/16/2025 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/45871 +--- +# 'dotnet watch' logs internal-facing messages to stderr instead of stdout + +Starting in .NET 10 RC 2, [`dotnet watch`](../../../tools/dotnet-watch.md) emits its own log messages to the `stderr` channel instead of `stdout`. This change is part of a general trend towards `dotnet` CLI commands not obscuring the `stdout` channel, which is often reserved for special semantics when running certain kinds of applications, like LSP or MCP servers. + +## Version introduced + +.NET 10 RC 2 + +## Previous behavior + +Previously, [`dotnet watch`](../../../tools/dotnet-watch.md) emitted log messages to `stdout`. + +## New behavior + +Starting in .NET 10 RC 2, [`dotnet watch`](../../../tools/dotnet-watch.md) emits log messages to `stderr`. + +## Type of breaking change + +This change is a [behavioral change](../../categories.md#behavioral-change). + +## Reason for change + +This change is part of a general trend towards `dotnet` CLI commands not obscuring the `stdout` channel, which is often reserved or assumed to have special semantics when running certain kinds of applications, like LSP or MCP servers. This change was implemented in . In general, the CLI should get out of the way of your applications. + +## Recommended action + +Most users shouldn't need to take any action. If you need the `dotnet watch` messages on `stdout`, you can redirect the `stderr` stream to `stdout`. For example, use `2>&1` to redirect the `2` file descriptor for `stderr` to the `1` file descriptor for `stdout`: + +```bash +dotnet watch 2>&1 +``` + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 18c08be85a233..3cb6602c54935 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -128,6 +128,8 @@ items: href: sdk/10.0/dotnet-package-list-restore.md - name: "`dotnet tool install --local` creates manifest by default" href: sdk/10.0/dotnet-tool-install-local-manifest.md + - name: "`dotnet watch` logs internal-facing messages to stderr instead of stdout" + href: sdk/10.0/dotnet-watch-stderr.md - name: MSBUILDCUSTOMBUILDEVENTWARNING escape hatch removed href: sdk/10.0/custom-build-event-warning.md - name: MSBuild custom culture resource handling