Repository navigation
Conversation
Add net11.0 and remove net8.0 and net9.0, and run the tests on both net10.0 and net11.0. CI builds against the 11.0 RC3 SDK until GA. Build main as 17.0 prereleases, run CI on release branches, and publish to NuGet with trusted publishing instead of a long-lived API key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a9aff1add3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| dotnet-version: | | ||
| 8.0.x | ||
| 9.0.x | ||
| 8.0.x # Runtime for NuGetKeyVaultSignTool, matching release.yml |
There was a problem hiding this comment.
Move SDK comments outside the multiline version input
In the Windows CI job, the # Runtime ... text is inside a YAML literal block, so it becomes part of the SDK version rather than a YAML comment. The setup-dotnet version resolver trims whitespace but rejects this string as an invalid version. Consequently, the Windows job stops at setup before building, testing, or publishing. The same defect appears in .github/workflows/release.yml at line 80 and blocks releases as well. Move both explanatory comments outside their dotnet-version blocks.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
🟡 Changes recommended
Inline explanations in YAML literal blocks become part of the SDK version, causing setup-dotnet to reject the values and block Windows release and CI jobs.
1 open issue
What changed in this PR
Prepares AutoMapper 17.0 for .NET 11 as part of #4679, updating framework targets, build infrastructure, and upgrade guidance.
Changes:
- Adds .NET 11 targets and test coverage, removes dedicated .NET 8/9 package targets, and sets 17.0 prerelease versioning.
- Pins CI and release builds to the .NET 11 RC3 SDK, adds maintenance-branch CI, and switches NuGet publishing to trusted publishing.
- Refreshes compatibility suppressions and documents framework compatibility and supported major versions.
| File | Description |
|---|---|
src/UnitTests/AutoMapper.UnitTests.csproj |
Adds .NET 11 to unit test targets. |
src/TestApp/TestApp.csproj |
Moves the test application to .NET 11. |
src/IntegrationTests/AutoMapper.IntegrationTests.csproj |
Runs integration tests on .NET 10 and 11. |
src/Benchmark/Benchmark.csproj |
Moves benchmarks to .NET 11. |
src/AutoMapper/CompatibilitySuppressions.xml |
Refreshes suppressions for the revised framework targets. |
src/AutoMapper/AutoMapper.csproj |
Updates package targets and sets minimum version to 17.0. |
src/AutoMapper.DI.Tests/AutoMapper.DI.Tests.csproj |
Runs dependency injection tests on .NET 10 and 11. |
docs/source/index.rst |
Links the 17.0 upgrade guide. |
docs/source/17.0-Upgrade-Guide.md |
Explains framework fallback and the 17.x/16.x support window. |
.github/workflows/release.yml |
Updates SDKs and introduces NuGet trusted publishing. |
.github/workflows/ci.yml |
Updates SDKs and enables CI on maintenance branches. |
Review effort: Balanced
Text inside a YAML block scalar is part of the value, so setup-dotnet rejected the inline comment as an invalid version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Adds .NET 11 support for the next major version, AutoMapper 17.0, building against the .NET 11 GA SDK. Part of #4679, which stays open until 17.0 ships.
Changes
netstandard2.0,net10.0,net11.0andnet471(Windows).net8.0andnet9.0are gone.net10.0andnet11.0, and unit tests also run onnet471.MinVerMinimumMajorMinoris 17.0, somainnow builds17.0.0-previewpackages.11.0.xSDK (11.0.100 at GA). CI also runs onrelease/**.release.ymlusesNuGet/loginfor NuGet trusted publishing instead ofAUTOMAPPER_NUGET_API_KEY.CompatibilitySuppressions.xmlis regenerated on Windows against the 16.0.0 baseline. The only new kind of entry isCP0008on theMemberListenum, from comparing the oldnet8.0andnet9.0builds withnetstandard2.0.Why .NET 8 stays in the Windows jobs
The Windows jobs still install the
8.0.xSDK, only to provide a runtime for tools. No project targets it.Microsoft.Sbom.DotNetTool4.1.5 targetsnet8.0. Forced onto .NET 10, it still exits 0 but hits a serialization error during its component scan. In a local comparison it produced an SBOM with 1 package instead of 49, so rolling forward would silently ship incomplete SBOMs.NuGetKeyVaultSignToolkeeps .NET 8 too, so thatmainand releases sign on the same runtime as before.Testing
net10.0,net11.0net10.0,net11.0net471A clean Windows pack also passes package validation with the regenerated suppressions. The Windows VM runs used RC3; on the GA SDK, Windows is covered by CI, which runs the same tests and pack.
Not tested:
NuGet/loginand the push can only run from a real tag, so trusted publishing is unproven until the first release. Signing only runs onmain.Before releasing 17.0
LuckyPennySoftware, repositoryAutoMapper, workflowrelease.ymlNUGET_USERrepository secret with the nuget.org profile name (not an email address)PackageValidationBaselineVersionto 17.0.0 and regenerate the suppressionsWithout the policy and secret, the
NuGet loginstep fails and the release stops before pushing to nuget.org. KeepAUTOMAPPER_NUGET_API_KEYwhilerelease/16.xandrelease/15.xcan still publish, because their workflows use it.release/16.xalready exists atv16.3.0, which is also the commit this branch starts from.🤖 Generated with Claude Code