dotnet-consolidate 4.2.0

dotnet tool install --global dotnet-consolidate --version 4.2.0                
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local dotnet-consolidate --version 4.2.0                
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=dotnet-consolidate&version=4.2.0                
nuke :add-package dotnet-consolidate --version 4.2.0                

dotnet consolidate

Build status Quality Gate Status NuGet

.NET core tool that verifies that all NuGet packages in a solution are consolidated.

Developers typically consider it bad practice to use different versions of the same NuGet package across different projects in the same solution.

https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#consolidate-tab

The tool finds such discrepancies.

Installation

dotnet tool install dotnet-consolidate --global

Usage

Pass a solution file as a parameter

dotnet consolidate -s YourSolution.sln

or multiple solutions

dotnet consolidate -s YourSolution.sln AnotherSolution.sln

You can also optionally specify the a package ID if you want only a single package to be consolidated

dotnet consolidate -s YourSolution.sln -p PackageId

or a list of package IDs if you want to consolidate multiple, but not all which are referenced in the solution projects

dotnet consolidate -s YourSolution.sln -p PackageID1 PackageID2

Alternatively, you can configure the opposite, package IDs that should be skipped during consolidation:

dotnet consolidate -s YourSolution.sln -e ExcludedPackageID1 ExcludedPackageID2

It's also possible to skip a pattern of versions during consolidation with a regular expression:

dotnet consolidate -s YourSolution.sln --excludedVersionsRegex .*-alpha$

With this, if e.g one of the projects in the solution uses MyPackage v1.0.0, and another project MyPackage v1.1.0-alpha, then no discrepancy will be indicated.

If the tool finds discrepancies between projects (only the specified ones if -p is given), it exits with non-success status code and prints these discrepancies.

Examples

dotnet consolidate -s umbraco.sln

✅ Output:

All packages are consolidated.

dotnet consolidate -s Sentry.sln

❌ Output:

Found 5 non-consolidated packages

----------------------------
Newtonsoft.Json
----------------------------
Sentry - 11.0.2
Sentry - 6.0.8

----------------------------
Microsoft.Extensions.Logging.Configuration
----------------------------
Sentry.Extensions.Logging - 2.1.0
Sentry.Extensions.Logging - 3.0.0

----------------------------
Microsoft.Extensions.DependencyInjection
----------------------------
Sentry.AspNetCore - 2.1.0
Sentry.Extensions.Logging.Tests - 2.1.1
Sentry.Extensions.Logging.Tests - 3.0.0

----------------------------
Microsoft.Extensions.Configuration.Json
----------------------------
Sentry.Extensions.Logging.Tests - 2.1.1
Sentry.Samples.GenericHost - 2.1.1
Sentry.Extensions.Logging.Tests - 3.0.0

----------------------------
Microsoft.AspNetCore.TestHost
----------------------------
Sentry.Testing - 2.1.1
Sentry.Testing - 3.1.0

Testing a development version of the tool locally from source

Run the following commands in src/DotNet.Consolidate:

dotnet build
dotnet pack

The package will be created under bin/Release.

Open the folder of the solution where you want to test the tool, then run:

dotnet tool install dotnet-consolidate --local --add-source  <full path of bin/Release>
dotnet consolidate -s YourSolution.sln

When you're finished, you can also uninstall it to clean up:

dotnet tool uninstall dotnet-consolidate
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
4.2.0 128,139 12/13/2023
4.1.0 9,708 11/10/2023
4.0.1 26,890 7/28/2023
4.0.0 1,310 7/27/2023 4.0.0 is deprecated because it has critical bugs.
3.0.2 90,030 2/24/2023
3.0.1 1,599 2/22/2023
3.0.0 1,252 2/22/2023
2.1.0 44,045 12/11/2022
2.0.0 90,445 8/30/2022
1.2.2 26,690 12/13/2021
1.2.1 52,058 1/4/2021
1.2.0 1,404 12/29/2020
1.1.0 1,572 11/5/2020
1.0.0 3,512 4/5/2020