Repository navigation
build: Native AOT baseline and .NET 10/11 targets (stack base) - #62
Merged
Merged
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
Scanned Files
|
Blind-Striker
added this pull request to stack #69
October 23, 2026 11:12
.NET 8 and .NET 9 reach end of support on 2026-11-10. - Core: netstandard2.0;net472;net10.0;net11.0 - Extensions: netstandard2.0;net10.0;net11.0 - Tests and sandboxes move to net10.0/net11.0 (net472 kept where present) - global.json selects SDK 11.0.100-rc.2 until .NET 11 GA - Workflows stop installing the .NET 8 and .NET 9 SDKs - The generator is enabled only for net10.0-compatible consumers, so net8/net9 consumers on the netstandard2.0 asset never load it - Drop the System.Text.Json reference that NU1510 flags as prunable - Rename the test helper class Extensions to MockExtensions (CA1724 on net11.0)
The .NET 11 SDK's test platform no longer runs .NET Framework test assemblies
through Mono ("Running .NET Framework tests is supported on Windows only"),
so the Linux and macOS jobs failed on the net472 runs. Skip net472 with a
warning off Windows; the Windows job still runs it. Drop the macOS Mono
install step.
Blind-Striker
force-pushed
the
review/native-aot-existing-consumers
branch
from
October 23, 2026 11:23
521addb to
7dc6a51
Compare
…tion Package validation compared the 2.0.0 net8.0/net9.0 assets with the netstandard2.0 asset that .NET 8/9 apps now resolve, and reported that the AwsService enum no longer implements ISpanFormattable there. On a .NET 8+ runtime every enum still implements it through System.Enum, so this is an artifact of dropping those target frameworks, which PackageValidationBaselineFrameworkToIgnore declares explicitly.
This was referenced Oct 23, 2026
Directory.Build.props now owns the framework sets and the modern-target gate instead of repeating net10.0/net11.0 literals across projects: - LocalStackModernMinimumTargetFramework / LocalStackModernTargetFrameworks (the targets that get Native AOT, the generator and the reflection-free paths), plus the netstandard2.0 and net472 targets and the per-package lists built from them - IsLocalStackModernTarget / IsLocalStackNetFrameworkTarget (true/false) for conditions - the package-validation baseline version and the frameworks it drops The packaged buildTransitive gate reads LocalStackClientGeneratorMinimumTargetFramework from a props file that pack generates from LocalStackModernMinimumTargetFramework, so adding a .NET version is a one-line change. Cake now asks MSBuild for evaluated target frameworks instead of parsing project text. tests/Directory.Build.props holds the settings every test project shared.
This was referenced Oct 23, 2026
Blind-Striker
marked this pull request as ready for review
October 23, 2026 21:54
9 of 34 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack (review bottom-up, merge as one stack): #62 base, #66 the #63 fix, #67 Native AOT test lane, #68 static-factory generic path, #70 slim generator, #71 public docs, #72 internal docs and 3.0.0, #73 reflection-free test, #74 package consumer in CI, #75 convention clean-up, #76 service catalog refresh.
Goal of the stack: 3.0.0, where existing consumers upgrade without code changes, both packages support Native AOT on net10.0/net11.0, and the libraries use no runtime reflection for types the compiler can see (a JIT-only fallback covers the rest).
This PR
buildTransitive, fixed-schema options binding, Options 8.0.2 on modern assets, and the public AWS-mode factory. Later layers replace its rooted-reflection generator.netstandard2.0;net472;net10.0;net11.0, Extensionsnetstandard2.0;net10.0;net11.0. .NET 8 and 9 reach end of support on 2026-11-10; those apps usenetstandard2.0. Tests and sandboxes run on net10.0/net11.0 (plus net472 where present).global.jsonpins the SDK 11 RC2 until .NET 11 GA.Directory.Build.props(LocalStackModernMinimumTargetFramework,LocalStackModernTargetFrameworks,LocalStackClientTargetFrameworks,LocalStackExtensionsTargetFrameworks, the net472/netstandard properties, and theIsLocalStackModernTarget/IsLocalStackNetFrameworkTargetgates). Projects, the generatedbuildTransitiveprops, and Cake (throughmsbuild -getProperty) read them, so adding .NET 12 is a one-line change.tests/Directory.Build.propsholds the test-naming analyzer exceptions. Older generator and options tests are renamed to the Should convention.PackageValidationBaselineFrameworkToIgnore). The only reported difference wasAwsServicenot implementingISpanFormattableon netstandard2.0, whichSystem.Enumstill provides on .NET 8+.Verification
Build with 0 warnings. Core 100 on each of 3 TFMs, Extensions 60 x2, Integration 239 x3, Generator 11, Functional 50 x2 (LocalStack 4.14.0 and keyed 2026.10.2).