From d0bb0cd9b52ec846a06caa7b471a58120a7ce753 Mon Sep 17 00:00:00 2001 From: Alex Czarnick <25237790+aczarnick@users.noreply.github.com> Date: Tue, 28 Jan 2025 19:33:23 -0600 Subject: [PATCH 1/6] Add Pre-Release Floating Version Documentation (#3385) --- docs/concepts/Dependency-Resolution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/concepts/Dependency-Resolution.md b/docs/concepts/Dependency-Resolution.md index 0f7da2b60..81cb86f50 100644 --- a/docs/concepts/Dependency-Resolution.md +++ b/docs/concepts/Dependency-Resolution.md @@ -63,6 +63,7 @@ When using a floating version, NuGet resolves the highest version of a package t | 1.1.* | 1.1.0
1.1.1
1.1.2-alpha
1.2.0-alpha | 1.1.1 | The highest stable version that respects the specified pattern.| | \*-\* | 1.1.0
1.1.1
1.1.2-alpha
1.3.0-beta | 1.3.0-beta | The highest version including the not stable versions. | Available in Visual Studio version 16.6, NuGet version 5.6, .NET Core SDK version 3.1.300 | | 1.1.\*-\* | 1.1.0
1.1.1
1.1.2-alpha
1.1.2-beta
1.3.0-beta | 1.1.2-beta | The highest version respecting the pattern and including the not stable versions. | Available in Visual Studio version 16.6, NuGet version 5.6, .NET Core SDK version 3.1.300 | +| 1.2.0-rc.* | 1.1.0
1.2.0-rc.1
1.2.0-rc.2
1.2.0 | 1.2.0 | Despite this being a version range with a prerelease part, stables are allowed if they match the stable part. Given that 1.2.0 > 1.2.0-rc.2, it is chosen. | | > [!Note] > Floating version resolution does not take into account whether or not a package is listed. From 415d518bc7f1e482d9b3f2e20e76f1b70def0956 Mon Sep 17 00:00:00 2001 From: 100tomer <43668725+100tomer@users.noreply.github.com> Date: Sat, 1 Feb 2025 03:45:39 +0200 Subject: [PATCH 2/6] Added RepoFlow, which is a new package management platform that supports NuGet and other package types. (#3386) --- docs/hosting-packages/Overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/hosting-packages/Overview.md b/docs/hosting-packages/Overview.md index b016cef0d..a19316165 100644 --- a/docs/hosting-packages/Overview.md +++ b/docs/hosting-packages/Overview.md @@ -39,5 +39,6 @@ There are also several other NuGet hosting products such as [Azure Artifacts](ht - [ProGet](https://inedo.com/proget) from Inedo - [Sleet](https://github.com/emgarten/sleet), an open-source NuGet V3 static feed generator - [TeamCity](https://www.jetbrains.com/teamcity/) from JetBrains. +- [RepoFlow](https://www.repoflow.io), a simple and easy-to-use package management platform. Regardless of how packages are hosted, you access them by adding them to the list of available sources in `NuGet.Config`. This can be done in Visual Studio as described in [Package Sources](../consume-packages/install-use-packages-visual-studio.md#package-sources), or from the command line using [`nuget sources`](../reference/cli-reference/cli-ref-sources.md). The path to a source can be a local folder pathname, a network name, or a URL. From 300a248589a4b12fcee0f04fed404ee3846b3c19 Mon Sep 17 00:00:00 2001 From: fuixx217 Date: Fri, 31 Jan 2025 20:46:55 -0500 Subject: [PATCH 3/6] Add an AzureDevOps example with the sources command (#3380) --- docs/reference/cli-reference/cli-ref-sources.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/cli-reference/cli-ref-sources.md b/docs/reference/cli-reference/cli-ref-sources.md index 827cdb3c4..56935e51b 100644 --- a/docs/reference/cli-reference/cli-ref-sources.md +++ b/docs/reference/cli-reference/cli-ref-sources.md @@ -107,5 +107,7 @@ nuget sources Enable -Name "nuget.org" nuget sources add -name foo.bar -source C:\NuGet\local -username foo -password bar -StorePasswordInClearText -configfile %AppData%\NuGet\my.config +nuget sources add -name MyAzureDevOpsSource -source "https://pkgs.dev.azure.com/yourorgname/yourprojectname/_packaging/yourfeedname/nuget/v3/index.json" -username ignored -password + nuget sources Update -Name "nuget.org" -ProtocolVersion 3 ``` From 778b8d4462c8cc3c8c585f03107226e92024d62c Mon Sep 17 00:00:00 2001 From: Juergen Gutsch Date: Mon, 3 Feb 2025 18:11:03 +0100 Subject: [PATCH 4/6] Adding CLI command to create a Directory.Packages.props (#3387) --- docs/consume-packages/Central-Package-Management.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/consume-packages/Central-Package-Management.md b/docs/consume-packages/Central-Package-Management.md index 06890cf72..d24d79b0c 100644 --- a/docs/consume-packages/Central-Package-Management.md +++ b/docs/consume-packages/Central-Package-Management.md @@ -38,6 +38,11 @@ Central package management applies to all ``-based MSBuild pro To get started with central package management, you must create a `Directory.Packages.props` file at the root of your repository and set the MSBuild property `ManagePackageVersionsCentrally` to `true`. +You can create it manually or you can use the dotnet CLI: +``` shell +dotnet new packagesprops +``` + Inside, you then define each of the respective package versions required of your projects using `` elements that define the package ID and version. From 63ac1d5520745cc8d6078b98d3754c2bddf64744 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Tue, 4 Feb 2025 15:38:57 -0800 Subject: [PATCH 5/6] Transitive pinning and pack (#3388) --- .../Central-Package-Management.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/docs/consume-packages/Central-Package-Management.md b/docs/consume-packages/Central-Package-Management.md index d24d79b0c..029b2fad7 100644 --- a/docs/consume-packages/Central-Package-Management.md +++ b/docs/consume-packages/Central-Package-Management.md @@ -122,6 +122,7 @@ For an idea of how central package management may look like, refer to our [sampl You can automatically override a transitive package version even without an explicit top-level `` by opting into a feature known as transitive pinning. This promotes a transitive dependency to a top-level dependency implicitly on your behalf when necessary. +Note that downgrades are allowed when transitive pinning a package. If you attempt to pin a package to a lower version than the one requested by your dependencies, restore will raise a [NU1109](../reference/errors-and-warnings/NU1109.md) error. You can enable this feature by setting the MSBuild property `CentralPackageTransitivePinningEnabled` to `true` in a project or in a `Directory.Packages.props` or `Directory.Build.props` import file: @@ -132,6 +133,45 @@ or `Directory.Build.props` import file: ``` +### Transitive pinning and pack + +When a package is transitively pinned, your project uses a higher than the one requested by your dependencies. +If you create a package from your project, in order to ensure that your package will work, NuGet will promote the transitively pinned dependencies to explicit dependencies in the nuspec. + +In the following example, `PackageA 1.0.0` has a dependency on `PackageB 1.0.0`. + +```xml + + + + + + +``` + +```xml + + + true + net6.0 + + + + + +``` + +When you use the pack command to create a package, both packages will appear in the dependency group. + +```xml + + + + +``` + +Because of this, the use of transitive pinning should be carefully evaluated when authoring a library as it may lead to dependencies you did not expect. + ## Overriding package versions You can override an individual package version by using the `VersionOverride` property on a `` item. This overrides any `` @@ -181,6 +221,7 @@ If you'd like to disable central package management for any a particular project ``` ## Global Package References + > [!Note] > This feature is only available in Visual Studio 2022 17.4 or higher, .NET SDK 7.0.100.preview7 or higher, and NuGet 6.4 or higher. From f204fb6da39534a7b07eb5ae9adfab0b472a4d50 Mon Sep 17 00:00:00 2001 From: Nikolche Kolev Date: Tue, 4 Feb 2025 16:27:30 -0800 Subject: [PATCH 6/6] Document the project.json migrator (#3389) --- docs/archive/media/project-json-migrator.png | Bin 0 -> 33829 bytes docs/archive/project-json-and-uwp.md | 3 ++- docs/archive/project-json-impact.md | 3 ++- docs/archive/project-json.md | 17 +++++++++++++++-- 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 docs/archive/media/project-json-migrator.png diff --git a/docs/archive/media/project-json-migrator.png b/docs/archive/media/project-json-migrator.png new file mode 100644 index 0000000000000000000000000000000000000000..4328dfa7f7d903995913f7efdc34a069794a3519 GIT binary patch literal 33829 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�>oha6|J9dP*UEn>P?^PA;Mc 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 Y#}RTe>veiL6!;}0sUT4y_BP=E0c(f*SpWb4 literal 0 HcmV?d00001 diff --git a/docs/archive/project-json-and-uwp.md b/docs/archive/project-json-and-uwp.md index b36ab5d20..0d88aa35a 100644 --- a/docs/archive/project-json-and-uwp.md +++ b/docs/archive/project-json-and-uwp.md @@ -10,7 +10,8 @@ ms.topic: conceptual # project.json and UWP > [!Important] -> This content is deprecated. Projects should use either the `packages.config` or PackageReference formats. +> This content is deprecated. Projects should use the PackageReference formats. +> Learn how to [migrate your project.json project to PackageReference](./project-json.md#migrate-projectjson-to-packagereference). This document describes the package structure that employs features in NuGet 3+ (Visual Studio 2015 and later). The `minClientVersion` property of your `.nuspec` can be used to state that you require the features described here by setting it to 3.1. diff --git a/docs/archive/project-json-impact.md b/docs/archive/project-json-impact.md index 3f171f019..23aae4fc2 100644 --- a/docs/archive/project-json-impact.md +++ b/docs/archive/project-json-impact.md @@ -10,7 +10,8 @@ ms.topic: conceptual # Impact of project.json when creating packages > [!Important] -> This content is deprecated. Projects should use either the `packages.config` or PackageReference formats. +> This content is deprecated. Projects should use the PackageReference formats. +> Learn how to [migrate your project.json project to PackageReference](./project-json.md#migrate-projectjson-to-packagereference). The `project.json` system used in NuGet 3+ affects package authors in several ways as described in the following sections. diff --git a/docs/archive/project-json.md b/docs/archive/project-json.md index ec21cf7e0..4b6243821 100644 --- a/docs/archive/project-json.md +++ b/docs/archive/project-json.md @@ -10,9 +10,10 @@ ms.topic: reference # project.json reference > [!Important] -> This content is deprecated. Projects should use either the `packages.config` or PackageReference formats. +> This content is deprecated. Projects should use the PackageReference formats. +> Learn how to [migrate your project.json project to PackageReference](#migrate-projectjson-to-packagereference). -*NuGet 3.x+* +*NuGet 3.x* The `project.json` file maintains a list of packages used in a project, known as a package management format. It supersedes `packages.config` but is in turn superseded by [PackageReference](../consume-packages/package-references-in-project-files.md) with NuGet 4.0+. @@ -37,6 +38,18 @@ The [`project.lock.json`](#projectlockjson) file (described below) is also used } ``` +## Migrate project.json to PackageReference + +The migration between project.json and PackageReference is straightforward. The easiest way to do it to use the built-in migrator in the latest Visual Studio 2022, Update 14. + +1. Load the project.json project in Visual Studio. +1. Go to the solution explorer of the project.json project and find the dependencies node. +1. Click `Migrate project.json to PackageReference...`! + +![Migrating from project.json to PackageReference](media/project-json-migrator.png) + +Alternatively, you may use the [dotnet migrate](/dotnet/core/tools/dotnet-migrate), or do the migration manually by taking all of the content from the project.json file and replacing it with the equivalent [PackageReference syntax](../consume-packages/Package-References-in-Project-Files.md). + ## Dependencies Lists the NuGet package dependencies of your project in the following form: