From 74ae660c6052986096e86202825c26bc93eb24a4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 16 Aug 2025 00:44:01 +0000 Subject: [PATCH 1/3] Initial plan From 0daa8c0dc84719a46bd7679c5d0ec5990f045aa6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 16 Aug 2025 00:53:06 +0000 Subject: [PATCH 2/3] Add breaking change documentation for project.json removal from dotnet restore Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com> --- docs/core/compatibility/10.0.md | 1 + ...dotnet-restore-project-json-unsupported.md | 47 +++++++++++++++++++ docs/core/compatibility/toc.yml | 2 + 3 files changed, 50 insertions(+) create mode 100644 docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md index 1eb3ffccd047e..d654bf4050f19 100644 --- a/docs/core/compatibility/10.0.md +++ b/docs/core/compatibility/10.0.md @@ -107,6 +107,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af | [Default workload configuration from 'loose manifests' to 'workload sets' mode](sdk/10.0/default-workload-config.md) | Behavioral change | Preview 2 | | [`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 | +| [project.json is no longer 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 | | [MSBuild custom culture resource handling](sdk/10.0/msbuild-custom-culture.md) | Behavioral change | Preview 1 | diff --git a/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md b/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md new file mode 100644 index 0000000000000..75926a74dbb4c --- /dev/null +++ b/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md @@ -0,0 +1,47 @@ +--- +title: "Breaking change - project.json is no longer supported in dotnet restore" +description: "Learn about the breaking change in .NET 10 where dotnet restore no longer supports project.json based projects." +ms.date: 08/16/2025 +ai-usage: ai-assisted +ms.custom: https://github.com/dotnet/docs/issues/47968 +--- + +# project.json is no longer supported in dotnet restore + +Starting with .NET 10, the [`dotnet restore` command](../../../tools/dotnet-restore.md) no longer supports `project.json` based projects. Such projects are ignored during the restore operation. + +## Version introduced + +.NET 10 Preview 7 + +## Previous behavior + +The `dotnet restore` command restored dependencies for `project.json` based projects. + +## New behavior + +The `dotnet restore` command ignores `project.json` based projects and no longer restores their dependencies. + +## Type of breaking change + +This change can affect [source compatibility](../../categories.md#source-compatibility). + +## Reason for change + +The `project.json` format was originally available only in .NET Core previews (through Preview 2 of .NET Core 1.0) and was completely replaced by PackageReference in 2017. The format has been marked as deprecated since 2017. + +Projects were originally migrated using the `dotnet migrate` command, but that command was removed from the CLI in the .NET Core 3.0 SDK. + +The removal of `project.json` support completes this transition and allows the .NET team to focus on delivering a better experience for PackageReference-based projects. + +## Recommended action + +Migrate your `project.json` projects to use PackageReference format instead. + +If you have .NET Core based `project.json` projects, you can use older versions of the .NET SDK that still include the [`dotnet migrate` command](../../../tools/dotnet-migrate.md) to convert them to the modern project format. + +For more information about migrating from `project.json`, see [Migrating from project.json to .csproj](/nuget/archive/project-json#migrate-projectjson-to-packagereference). + +## Affected APIs + +None. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 724e1f2485cca..68002c06c1e00 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -114,6 +114,8 @@ items: href: sdk/10.0/dotnet-tool-pack-publish.md - name: "`dotnet restore` audits transitive packages" href: sdk/10.0/nugetaudit-transitive-packages.md + - name: project.json is no longer supported in `dotnet restore` + href: sdk/10.0/dotnet-restore-project-json-unsupported.md - name: Default workload configuration from 'loose manifests' to 'workload sets' mode href: sdk/10.0/default-workload-config.md - name: "`dotnet package list` performs restore" From 486a6db231c4c278a602a048ad4b1c2d7d4e0366 Mon Sep 17 00:00:00 2001 From: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Date: Mon, 18 Aug 2025 10:16:32 -0700 Subject: [PATCH 3/3] Apply suggestions from code review --- docs/core/compatibility/10.0.md | 2 +- .../sdk/10.0/dotnet-restore-project-json-unsupported.md | 4 ++-- docs/core/compatibility/toc.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/core/compatibility/10.0.md b/docs/core/compatibility/10.0.md index d654bf4050f19..c5908109757a9 100644 --- a/docs/core/compatibility/10.0.md +++ b/docs/core/compatibility/10.0.md @@ -107,7 +107,7 @@ If you're migrating an app to .NET 10, the breaking changes listed here might af | [Default workload configuration from 'loose manifests' to 'workload sets' mode](sdk/10.0/default-workload-config.md) | Behavioral change | Preview 2 | | [`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 | -| [project.json is no longer supported in `dotnet restore`](sdk/10.0/dotnet-restore-project-json-unsupported.md) | Source incompatible | Preview 7 | +| [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 | | [MSBuild custom culture resource handling](sdk/10.0/msbuild-custom-culture.md) | Behavioral change | Preview 1 | diff --git a/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md b/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md index 75926a74dbb4c..4feb15a2d811b 100644 --- a/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md +++ b/docs/core/compatibility/sdk/10.0/dotnet-restore-project-json-unsupported.md @@ -6,7 +6,7 @@ ai-usage: ai-assisted ms.custom: https://github.com/dotnet/docs/issues/47968 --- -# project.json is no longer supported in dotnet restore +# project.json no longer supported in dotnet restore Starting with .NET 10, the [`dotnet restore` command](../../../tools/dotnet-restore.md) no longer supports `project.json` based projects. Such projects are ignored during the restore operation. @@ -30,7 +30,7 @@ This change can affect [source compatibility](../../categories.md#source-compati The `project.json` format was originally available only in .NET Core previews (through Preview 2 of .NET Core 1.0) and was completely replaced by PackageReference in 2017. The format has been marked as deprecated since 2017. -Projects were originally migrated using the `dotnet migrate` command, but that command was removed from the CLI in the .NET Core 3.0 SDK. +When the `project.json` format was replaced, users migrated these projects using the [`dotnet migrate`](../../../tools/dotnet-migrate.md) command, but that command was removed from the CLI in the .NET Core 3.0 SDK. The removal of `project.json` support completes this transition and allows the .NET team to focus on delivering a better experience for PackageReference-based projects. diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml index 68002c06c1e00..e70cdffbc642a 100644 --- a/docs/core/compatibility/toc.yml +++ b/docs/core/compatibility/toc.yml @@ -114,7 +114,7 @@ items: href: sdk/10.0/dotnet-tool-pack-publish.md - name: "`dotnet restore` audits transitive packages" href: sdk/10.0/nugetaudit-transitive-packages.md - - name: project.json is no longer supported in `dotnet restore` + - name: project.json not supported in `dotnet restore` href: sdk/10.0/dotnet-restore-project-json-unsupported.md - name: Default workload configuration from 'loose manifests' to 'workload sets' mode href: sdk/10.0/default-workload-config.md