You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Starting in .NET 10, [`dotnet watch`](../../../tools/dotnet-watch.md) emits its internal-facing 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. That channel is often reserved for special semantics when running certain kinds of applications, like LSP or MCP servers.
11
+
12
+
## Version introduced
13
+
14
+
.NET 10 RC 2
15
+
16
+
## Previous behavior
17
+
18
+
Previously, [`dotnet watch`](../../../tools/dotnet-watch.md) emitted log messages to `stdout`.
19
+
20
+
## New behavior
21
+
22
+
Starting in .NET 10, [`dotnet watch`](../../../tools/dotnet-watch.md) emits log messages to `stderr`.
23
+
24
+
## Type of breaking change
25
+
26
+
This change is a [behavioral change](../../categories.md#behavioral-change).
27
+
28
+
## Reason for change
29
+
30
+
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. In general, the .NET CLI should get out of the way of your applications.
31
+
32
+
## Recommended action
33
+
34
+
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`.
0 commit comments