
Process API Net11
Provides guidance on the new System.Diagnostics.Process APIs introduced in .NET 11...
Install
npx skills add managedcode/dotnet-skills --skill process-api-net11 -g -a claude-code -y- Repository
- managedcode/dotnet-skills500
- Category
- Engineering
- Updated
- 6d ago
- License
- MIT
- Context cost
- Mediumabout 2,787 tokens
- Runs scripts
- No, instructions only
What it does
Provides guidance on the new System.Diagnostics.Process APIs introduced in .NET 11: Process.Run, Process.RunAndCaptureText, Process.StartAndForget, Process.ReadAllText/Bytes/Lines, KillOnParentExit, InheritedHandles, and StartDetached. USE FOR: starting, orchestrating, or capturing output from external processes in applications targeting net11.0 or later. DO NOT USE FOR: applications targeting .NET 10 or earlier, or basic pre-.NET 11 Process.Start usage without new APIs.
Process API Improvements, .NET 11
New APIs added to System.Diagnostics.Process in .NET 11 simplify process management, eliminate boilerplate, and prevent common deadlock patterns when capturing output in .NET 11 or later applications.
When to Use
- Running or orchestrating external processes in a .NET 11 (or later) project.
- Needing to start a process, wait for it to exit, and capture its output/error streams without risking deadlocks (
Process.RunAndCaptureText[Async]). - Wanting to ensure child processes are automatically terminated when the parent process exits (
KillOnParentExit). - Requiring lightweight, low-overhead process creation via
SafeProcessHandleon supported platforms. - Requiring fine-grained control over handle inheritance (
InheritedHandles) or starting detached processes (StartDetached).
When Not to Use
- The project targets .NET 10 or earlier, these APIs are not available before .NET 11.
- The default
Process.Start()is sufficient and does not require output capturing or advanced lifecycle rules.
Target Framework
<TargetFramework>net11.0</TargetFramework>
New APIs
Types
Before using the new convenience methods, note the following types. Use the framework types directly:
| Type | Kind | Read-only properties |
|---|---|---|
ProcessExitStatus | Sealed class | int ExitCode, bool Canceled, PosixSignal? Signal |
ProcessTextOutput | Sealed class | ProcessExitStatus ExitStatus, string StandardOutput, string StandardError, int ProcessId |
ProcessOutputLine | Readonly struct | string Content, bool StandardError |
