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