“dotnet watch” 将日志输出到 stderr,而非 stdout

从 .NET 10 开始, dotnet watch 将其面向内部的日志消息发出到 stderr 通道而不是 stdout通道。 这项更改是整体趋势的一部分,即CLI命令趋向于不过度遮盖通道dotnetstdout。 运行某些类型的应用程序(如 LSP 或 MCP 服务器)时,该通道通常保留为特殊语义。

已引入的版本

.NET 10

以前的行为

以前,dotnet watchstdout 发送日志消息。

新行为

从 .NET 10 开始,dotnet watch 发出日志消息到 stderr

破坏性变更的类型

此更改为行为更改

更改原因

此更改是 CLI 命令不遮挡通道的总体趋势的一部分,此通道通常用于在运行某些类型的应用程序(如 LSP 或 MCP 服务器)时被保留或被认为具有特殊语义。 通常,.NET CLI 应该不干扰你的应用程序。

大多数用户都不需要采取任何措施。 如果需要在 dotnet watch 上的消息 stdout,可以将 stderr 流重定向到 stdout。 例如,使用2>&12stderr文件描述符重定向到1stdout文件描述符。

受影响的 API

没有。