All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fix crash when a nuspec declares an exact-range version constraint across multiple projects (#1071) — when a package's nuspec dependency uses an exact version range (e.g.
[1.0.0]) and multiple versions of that package are present in a multi-project solution, the tool no longer crashes with "Unable to locate valid bom ref"; the dependency edge is resolved to the version that satisfies the range
- CycloneDX spec 1.7 support — upgraded CycloneDX.Core from 11.0.0 to 12.0.1; generated BOMs now use the
bom/1.7schema namespace - Allow credentials via environment variables (#1036) — NuGet feed credentials can now be passed through environment variables
- Allow exclude filter without version specifier (#1014) — the
--excludefilter no longer requires a version to be specified - Recursive scan warning (#1037) — a warning is now emitted when scanning project references recursively to make the behavior more visible
- End-to-end test suite (#1032) — added E2E tests using Testcontainers and Verify snapshots
- Fix project name resolution for classic .NET Framework projects (#1051) — correctly resolve
AssemblyNamein projects using the default XML namespace - Fix case-insensitive comparison when pruning transitive deps (#1025, #1040) — package names are now compared case-insensitively when removing unresolved transitive dependencies
- Fix metadata import overrides (#1041) — metadata values imported from project properties are no longer incorrectly overridden
- Use
tools/componentsinstead of deprecatedtools/tool(#1043) — BOM metadata now uses the non-deprecated CycloneDX structure for recording tool information - Validate GitHub API redirect destination (#1030) — redirect URLs from the GitHub API are now validated before following
- Sanitize untrusted URL inputs from NuGet feed metadata (#1033) — URLs from NuGet package metadata are now sanitized before use
- Rootless container (#1035) — Docker image now runs as a non-root user by default
- Trusted publishing for .NET tool package (#1054) — NuGet package publishing now uses trusted publishing
- Upgrade CycloneDX.Core from 10.0.1 to 12.0.1 (#1042) — via intermediate upgrade to 11.0.0; enables CycloneDX spec 1.7 output
- Dependency updates
- actions/checkout: 6.0.1 → 6.0.2 (#1008, #1045)
- actions/setup-dotnet: 5.0.1 → 5.2.0 (#1003, #1052)
- actions/upload-artifact: 5.0.0 → 7.0.0 (#1031)
- Add security trust model (#1029)
- Move threat model and add architecture reference (#1034)
- Link NuGet and Docker Hub in README (#1019)
- Streamline README shields and links (#1018)
- Fix CI link in README (#1015)
⚠️ WARNING: This is a MAJOR release with breaking changes.This release includes multiple significant changes that may affect compatibility:
- Removed deprecated CLI arguments - Several CLI flags have been removed. Scripts, CI/CD pipelines, and automation using these flags will break.
- Upgraded to .NET 10 - Runtime requirements have changed.
- Updated System.CommandLine - Upgraded from beta4 to v2.0.0 final, which includes breaking API changes that may affect command-line behavior.
- Updated dependency versions - NuGet packages, System.IO.Abstractions, and other dependencies have been upgraded.
Action required: Test thoroughly in a non-production environment before upgrading. Review all sections below for changes that may affect your use case.
-
Remove deprecated CLI arguments (#996, 0ae5d6a)
- Removed
--json/-jflag (replaced by--output-format json) - Removed
-fflag (replaced by-fn/--filename) - Removed
-dflag (replaced by-ed/--exclude-dev) - Removed
-rflag (replaced by-rs/--scan-project-references) - Removed
--disable-github-licenses/-dglflag (already default behavior) - Removed
jsonproperty fromRunOptionsmodel - Updated all tests to use
outputFormatenum instead of booleanjsonflag - Cleaned up legacy flag handling logic in
Program.csandRunner.cs - Note:
--outflag was restored before release for backward compatibility (see Fixed section below)
- Removed
-
Upgraded System.CommandLine to v2.0.0 (#989, e11f8e7)
- Upgraded from
2.0.0-beta4.22272.1to2.0.0(stable release) - This version includes breaking API changes from the beta
- Command-line parsing behavior may differ in edge cases
- Upgraded from
-
Minimum .NET runtime requirement (#989, e11f8e7)
- Now requires .NET 10 runtime (upgraded from .NET 9)
- Docker images now use
mcr.microsoft.com/dotnet/sdk:10.0
- Documentation update (#987, f041ac2)
- Added
.slnxformat to supported file types in README
- Added
-
Dockerfile improvements (#993, edf2bd9)
- Implemented multi-stage build (build + runtime stages) for smaller images
- Changed from tool installation to direct publish deployment
- Added environment variables for non-root execution:
DOTNET_CLI_HOME,NUGET_PACKAGES - Made
/tmp/dotnet-homeand/tmp/nuget-packageswritable for any user (chmod 0755) - Changed entrypoint from
CycloneDXtodotnet /app/CycloneDX.dll - Fixed handling when no path argument is provided (now shows help instead of error)
- Made
pathargument optional withArgumentArity.ZeroOrOne
-
Upgrade to .NET 10 (#989, e11f8e7)
- Updated target framework to
net10.0 - Updated SDK image to
mcr.microsoft.com/dotnet/sdk:10.0 - Updated System.IO.Abstractions from 21.0.2 to 22.1.0
- Updated test runner packages (xunit.runner.visualstudio, coverlet.collector)
- Fixed devcontainer Ubuntu 22.04 Dockerfile
- Updated target framework to
-
Dependency updates
- actions/checkout: 5.0.0 → 6.0.1 (#986, #991)
- actions/upload-artifact: 4.6.2 → 5.0.0 (#979)
- actions/setup-dotnet: 5.0.0 → 5.0.1 (#988)
- danielpalme/ReportGenerator-GitHub-Action (version bump) (#992)
-
Restore
--outparameter for backward compatibility- Reintroduced
--outflag as a deprecated alias for--output/-oto maintain compatibility with existing GitHub Actions and CI/CD pipelines - The parameter is marked as deprecated with a message directing users to use
--outputinstead - If both
--outputand--outare provided,--outputtakes precedence - Prevents breaking existing automation while encouraging migration to the new flag
- Reintroduced
-
Restore
--jsonparameter for backward compatibility- Reintroduced
--jsonflag as a deprecated alias for--output-format jsonto maintain compatibility with existing GitHub Actions and CI/CD pipelines - The parameter is marked as deprecated with a message directing users to use
--output-formatinstead - If
--jsonis provided, it sets the output format to JSON - Prevents breaking existing automation while encouraging migration to the new flag
- Reintroduced
-
Missing using statement (161766f)
- Added missing
using System;directive in Program.cs
- Added missing
-
Workflow security hardening (#975, 39b8986)
- Changed global
permissions: contents: readtopermissions: read-all - Follows principle of least privilege by limiting default permissions
- Changed global
-
Pin GitHub Actions versions (1145c82)
- Pinned all GitHub Actions to specific commit SHAs for reproducibility
-
Enable NuGet package locking (#972, fad44df)
- Added
packages.lock.jsonfiles for both main and test projects - Enabled
RestorePackagesWithLockFilein Directory.Build.props - Updated CI/CD workflows to use locked restore
- Added
-
Update NuGet dependencies (#973, e930da1)
- Bumped
NuGet.ProjectModelfrom 6.9.1 to 6.14.0 - Bumped
NuGet.Protocolfrom 6.9.1 to 6.14.0
- Bumped
- Initial baseline for changelog tracking