From 0786245ac6db0ef6841968d97d5ed4aa63fbb941 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 13 Oct 2025 19:50:14 +0000
Subject: [PATCH 1/5] Initial plan
From 38810c54ca150bcc32f82e017583c85bd7feccce Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Mon, 13 Oct 2025 19:55:44 +0000
Subject: [PATCH 2/5] Add breaking change documentation for dnx.ps1 removal
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
docs/core/compatibility/10.0.md | 1 +
.../compatibility/sdk/10.0/dnx-ps1-removed.md | 39 +++++++++++++++++++
docs/core/compatibility/toc.yml | 2 +
3 files changed, 42 insertions(+)
create mode 100644 docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md
index 7d0c66625293f..b0f13ec0a0aa1 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 |
+| [dnx.ps1 file is no longer included in .NET SDK](sdk/10.0/dnx-ps1-removed.md) | Source incompatible | GA |
| [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/dnx-ps1-removed.md b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
new file mode 100644
index 0000000000000..a7c0dcc0b8e03
--- /dev/null
+++ b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
@@ -0,0 +1,39 @@
+---
+title: "Breaking change - dnx.ps1 file is no longer included in .NET SDK"
+description: "Learn about the breaking change in .NET 10 where the dnx.ps1 script is no longer included in Windows versions of the .NET SDK."
+ms.date: 10/13/2025
+ai-usage: ai-assisted
+ms.custom: https://github.com/dotnet/docs/issues/497988
+---
+
+# dnx.ps1 file is no longer included in .NET SDK
+
+The `dnx.ps1` shim script is no longer included in Windows versions of the .NET SDK.
+
+## Version introduced
+
+.NET 10 GA
+
+## Previous behavior
+
+In Windows versions of the .NET SDK, a `dnx.ps1` script was included in the dotnet root folder, alongside `dotnet.exe` and `dnx.cmd`.
+
+## New behavior
+
+The `dnx.ps1` script is no longer included. The `dnx.cmd` script remains available for executing tools.
+
+## Type of breaking change
+
+This change can affect [source compatibility](../../categories.md#source-incompatible).
+
+## Reason for change
+
+The `dnx.ps1` script was added to avoid an extra `Terminate Batch Job` prompt when cancelling tools run via `dnx` with `CTRL+C`. However, PowerShell has special handling for `--`, so if `--` was passed on the command line it would never make it through to `dnx`. This meant from PowerShell it was impossible to pass options to a tool using `dnx` if `dnx` itself has the same option. For example, `dnx dotnet-serve -- --help` would show the help for `dnx` instead of the help for `dotnet-serve`.
+
+## Recommended action
+
+In most cases, the `dnx.cmd` script is used instead so no action is necessary. If you were calling `dnx.ps1` directly, switch to `dnx.cmd`.
+
+## Affected APIs
+
+None.
diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml
index 18c08be85a233..995197f68c22d 100644
--- a/docs/core/compatibility/toc.yml
+++ b/docs/core/compatibility/toc.yml
@@ -116,6 +116,8 @@ items:
href: sdk/10.0/dotnet-cli-interactive.md
- name: .NET tool packaging creates RuntimeIdentifier-specific tool packages
href: sdk/10.0/dotnet-tool-pack-publish.md
+ - name: dnx.ps1 file is no longer included in .NET SDK
+ href: sdk/10.0/dnx-ps1-removed.md
- name: "`dotnet restore` audits transitive packages"
href: sdk/10.0/nugetaudit-transitive-packages.md
- name: project.json not supported in `dotnet restore`
From 382b8a5264ad18e8f30d7333feccd571067744b8 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 13 Oct 2025 17:35:13 -0700
Subject: [PATCH 3/5] Apply suggestions from code review
---
docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
index a7c0dcc0b8e03..bd5cfdb4110dd 100644
--- a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
+++ b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
@@ -8,7 +8,7 @@ ms.custom: https://github.com/dotnet/docs/issues/497988
# dnx.ps1 file is no longer included in .NET SDK
-The `dnx.ps1` shim script is no longer included in Windows versions of the .NET SDK.
+The `dnx.ps1` shim script is no longer included in the .NET SDK.
## Version introduced
@@ -16,7 +16,7 @@ The `dnx.ps1` shim script is no longer included in Windows versions of the .NET
## Previous behavior
-In Windows versions of the .NET SDK, a `dnx.ps1` script was included in the dotnet root folder, alongside `dotnet.exe` and `dnx.cmd`.
+Since .NET 10 Preview 7, on Windows versions of the .NET SDK, a `dnx.ps1` script was included in the dotnet root folder, alongside `dotnet.exe` and `dnx.cmd`.
## New behavior
@@ -28,7 +28,7 @@ This change can affect [source compatibility](../../categories.md#source-incompa
## Reason for change
-The `dnx.ps1` script was added to avoid an extra `Terminate Batch Job` prompt when cancelling tools run via `dnx` with `CTRL+C`. However, PowerShell has special handling for `--`, so if `--` was passed on the command line it would never make it through to `dnx`. This meant from PowerShell it was impossible to pass options to a tool using `dnx` if `dnx` itself has the same option. For example, `dnx dotnet-serve -- --help` would show the help for `dnx` instead of the help for `dotnet-serve`.
+The `dnx.ps1` script was added to avoid an extra `Terminate Batch Job` prompt when cancelling tools run via `dnx` with Ctrl+C. However, PowerShell has special handling for `--`, so if `--` was passed on the command line, it never made it through to `dnx`. This meant that in PowerShell, it was impossible to pass options to a tool using `dnx` if `dnx` itself has the same option. For example, `dnx dotnet-serve -- --help` showed the help for `dnx` instead of the help for `dotnet-serve`.
## Recommended action
From 65ed7a454d989ab70f1d1e6c2e9c1c42a8c9a3ff Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Mon, 13 Oct 2025 17:37:45 -0700
Subject: [PATCH 4/5] Update
docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
---
docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
index bd5cfdb4110dd..2c0ca0e12583d 100644
--- a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
+++ b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
@@ -24,7 +24,7 @@ The `dnx.ps1` script is no longer included. The `dnx.cmd` script remains availab
## Type of breaking change
-This change can affect [source compatibility](../../categories.md#source-incompatible).
+This change can affect [source compatibility](../../categories.md#source-compatibility).
## Reason for change
From 1d0c59c794ed53380d026fbbcb5b906093d55ac0 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 14 Oct 2025 02:01:56 +0000
Subject: [PATCH 5/5] Address review feedback: update link format and reorder
entry
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
docs/core/compatibility/10.0.md | 2 +-
docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md
index 128223558ed55..cecd0dccd6438 100644
--- a/docs/core/compatibility/10.0.md
+++ b/docs/core/compatibility/10.0.md
@@ -108,11 +108,11 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af
| [`dotnet` CLI commands log non-command-relevant data to stderr](sdk/10.0/dotnet-cli-stderr-output.md) | Behavioral change | RC 2 |
| [.NET tool packaging creates RuntimeIdentifier-specific tool packages](sdk/10.0/dotnet-tool-pack-publish.md) | Behavioral change | Preview 6 |
| [Default workload configuration from 'loose manifests' to 'workload sets' mode](sdk/10.0/default-workload-config.md) | Behavioral change | Preview 2 |
+| [dnx.ps1 file is no longer included in .NET SDK](sdk/10.0/dnx-ps1-removed.md) | Source incompatible | GA |
| [`dotnet new sln` defaults to SLNX file format](sdk/10.0/dotnet-new-sln-slnx-default.md) | Behavioral change | RC 1 |
| [`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 |
-| [dnx.ps1 file is no longer included in .NET SDK](sdk/10.0/dnx-ps1-removed.md) | Source incompatible | GA |
| [`dotnet watch` logs 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 |
diff --git a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
index 2c0ca0e12583d..11261bfe0aaab 100644
--- a/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
+++ b/docs/core/compatibility/sdk/10.0/dnx-ps1-removed.md
@@ -24,7 +24,7 @@ The `dnx.ps1` script is no longer included. The `dnx.cmd` script remains availab
## Type of breaking change
-This change can affect [source compatibility](../../categories.md#source-compatibility).
+This change can affect source compatibility.
## Reason for change