Skip to content

Commit 449f968

Browse files
committed
feat: implement Native AOT source generator and verify architecture
- Add Roslyn incremental source generator for AWS client discovery - Create LocalStack.Client.Generators project with UnsafeAccessor generation - Implement AOT compatibility test project with PublishAot=true - Add comprehensive registry system for runtime accessor lookup - Extend IAwsAccessor interface with ClientType/ConfigType properties - Update Session.cs to eliminate reflection on .NET 8+ builds - Add manual test accessor proving architecture works end-to-end - Verify registry population, client creation, and interface mapping - Confirm reflection-free execution with Native AOT compatibility Key Components: - LocalStack.Client.Generators: Roslyn source generator (.NET 8/9) - AwsAccessorGenerator: Semantic analysis and UnsafeAccessor generation - ModuleInitializer: Automatic registration of generated accessors - AOT test project: Comprehensive verification with AWS SDK packages - Manual verification: Proves registry and accessor architecture work BREAKING CHANGE: Type-based Session methods marked obsolete on .NET 8+ Resolves Native AOT compatibility requirements for LocalStack.Client Phase 3 complete - source generator infrastructure ready
1 parent 94b72e2 commit 449f968

24 files changed

+1054
-95
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,4 +340,6 @@ testrunner
340340

341341

342342
# Visual Studio Code options directory
343-
.vscode/
343+
.vscode/
344+
345+
internal-docs/

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<PackageExtensionVersion>2.0.0</PackageExtensionVersion>
1010
<IncludeSymbols>true</IncludeSymbols>
1111
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
12+
<Net8OrAbove Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '8.0'))">true</Net8OrAbove>
1213
<LangVersion>13.0</LangVersion>
1314
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
1415
<AnalysisLevel>latest</AnalysisLevel>

Directory.Packages.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<PackageVersion Include="Meziantou.Analyzer" Version="2.0.205" />
55
<PackageVersion Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="5.0.0-1.25277.114" />
66
<PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="9.0.0" />
7+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
8+
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
79
<PackageVersion Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.14.15" />
810
<PackageVersion Include="Roslynator.Analyzers" Version="4.13.1" />
911
<PackageVersion Include="Roslynator.CodeAnalysis.Analyzers" Version="4.13.1" />

LocalStack.sln

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,60 +45,190 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{FF7B26
4545
EndProject
4646
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalStack.Tests.Common", "tests\common\LocalStack.Tests.Common\LocalStack.Tests.Common.csproj", "{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}"
4747
EndProject
48+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
49+
EndProject
50+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalStack.Client.Generators", "src\LocalStack.Client.Generators\LocalStack.Client.Generators.csproj", "{B5254DE8-A300-45E9-9960-96B7C8606A04}"
51+
EndProject
52+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalStack.Client.AotCompatibility.Tests", "tests\LocalStack.Client.AotCompatibility.Tests\LocalStack.Client.AotCompatibility.Tests.csproj", "{28A177A6-256A-4E89-9FB2-0438670FD035}"
53+
EndProject
4854
Global
4955
GlobalSection(SolutionConfigurationPlatforms) = preSolution
5056
Debug|Any CPU = Debug|Any CPU
57+
Debug|x64 = Debug|x64
58+
Debug|x86 = Debug|x86
5159
Release|Any CPU = Release|Any CPU
60+
Release|x64 = Release|x64
61+
Release|x86 = Release|x86
5262
EndGlobalSection
5363
GlobalSection(ProjectConfigurationPlatforms) = postSolution
5464
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
5565
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|Any CPU.Build.0 = Debug|Any CPU
66+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|x64.ActiveCfg = Debug|Any CPU
67+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|x64.Build.0 = Debug|Any CPU
68+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|x86.ActiveCfg = Debug|Any CPU
69+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Debug|x86.Build.0 = Debug|Any CPU
5670
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|Any CPU.ActiveCfg = Release|Any CPU
5771
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|Any CPU.Build.0 = Release|Any CPU
72+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|x64.ActiveCfg = Release|Any CPU
73+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|x64.Build.0 = Release|Any CPU
74+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|x86.ActiveCfg = Release|Any CPU
75+
{22C080D7-929C-44F1-909C-831EF9D2810F}.Release|x86.Build.0 = Release|Any CPU
5876
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
5977
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|Any CPU.Build.0 = Debug|Any CPU
78+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|x64.ActiveCfg = Debug|Any CPU
79+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|x64.Build.0 = Debug|Any CPU
80+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|x86.ActiveCfg = Debug|Any CPU
81+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Debug|x86.Build.0 = Debug|Any CPU
6082
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|Any CPU.ActiveCfg = Release|Any CPU
6183
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|Any CPU.Build.0 = Release|Any CPU
84+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|x64.ActiveCfg = Release|Any CPU
85+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|x64.Build.0 = Release|Any CPU
86+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|x86.ActiveCfg = Release|Any CPU
87+
{E7E16B66-EE23-4B49-89C5-4FF64F2ED95D}.Release|x86.Build.0 = Release|Any CPU
6288
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6389
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
90+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|x64.ActiveCfg = Debug|Any CPU
91+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|x64.Build.0 = Debug|Any CPU
92+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|x86.ActiveCfg = Debug|Any CPU
93+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Debug|x86.Build.0 = Debug|Any CPU
6494
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
6595
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|Any CPU.Build.0 = Release|Any CPU
96+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|x64.ActiveCfg = Release|Any CPU
97+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|x64.Build.0 = Release|Any CPU
98+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|x86.ActiveCfg = Release|Any CPU
99+
{9FC6CABE-ED38-4048-B511-69D76870ABF8}.Release|x86.Build.0 = Release|Any CPU
66100
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
67101
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|Any CPU.Build.0 = Debug|Any CPU
102+
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|x64.ActiveCfg = Debug|Any CPU
103+
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|x64.Build.0 = Debug|Any CPU
104+
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|x86.ActiveCfg = Debug|Any CPU
105+
{691A4094-2074-474A-81A3-E33B728AE54E}.Debug|x86.Build.0 = Debug|Any CPU
68106
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|Any CPU.ActiveCfg = Release|Any CPU
69107
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|Any CPU.Build.0 = Release|Any CPU
108+
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|x64.ActiveCfg = Release|Any CPU
109+
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|x64.Build.0 = Release|Any CPU
110+
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|x86.ActiveCfg = Release|Any CPU
111+
{691A4094-2074-474A-81A3-E33B728AE54E}.Release|x86.Build.0 = Release|Any CPU
70112
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
71113
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|Any CPU.Build.0 = Debug|Any CPU
114+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|x64.ActiveCfg = Debug|Any CPU
115+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|x64.Build.0 = Debug|Any CPU
116+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|x86.ActiveCfg = Debug|Any CPU
117+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Debug|x86.Build.0 = Debug|Any CPU
72118
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|Any CPU.ActiveCfg = Release|Any CPU
73119
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|Any CPU.Build.0 = Release|Any CPU
120+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|x64.ActiveCfg = Release|Any CPU
121+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|x64.Build.0 = Release|Any CPU
122+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|x86.ActiveCfg = Release|Any CPU
123+
{4E90D3D1-D570-4205-9C6E-B917B5508912}.Release|x86.Build.0 = Release|Any CPU
74124
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
75125
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|Any CPU.Build.0 = Debug|Any CPU
126+
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|x64.ActiveCfg = Debug|Any CPU
127+
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|x64.Build.0 = Debug|Any CPU
128+
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|x86.ActiveCfg = Debug|Any CPU
129+
{74035094-A726-44E2-9B88-42D6425D8548}.Debug|x86.Build.0 = Debug|Any CPU
76130
{74035094-A726-44E2-9B88-42D6425D8548}.Release|Any CPU.ActiveCfg = Release|Any CPU
77131
{74035094-A726-44E2-9B88-42D6425D8548}.Release|Any CPU.Build.0 = Release|Any CPU
132+
{74035094-A726-44E2-9B88-42D6425D8548}.Release|x64.ActiveCfg = Release|Any CPU
133+
{74035094-A726-44E2-9B88-42D6425D8548}.Release|x64.Build.0 = Release|Any CPU
134+
{74035094-A726-44E2-9B88-42D6425D8548}.Release|x86.ActiveCfg = Release|Any CPU
135+
{74035094-A726-44E2-9B88-42D6425D8548}.Release|x86.Build.0 = Release|Any CPU
78136
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
79137
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|Any CPU.Build.0 = Debug|Any CPU
138+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|x64.ActiveCfg = Debug|Any CPU
139+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|x64.Build.0 = Debug|Any CPU
140+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|x86.ActiveCfg = Debug|Any CPU
141+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Debug|x86.Build.0 = Debug|Any CPU
80142
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|Any CPU.ActiveCfg = Release|Any CPU
81143
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|Any CPU.Build.0 = Release|Any CPU
144+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|x64.ActiveCfg = Release|Any CPU
145+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|x64.Build.0 = Release|Any CPU
146+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|x86.ActiveCfg = Release|Any CPU
147+
{350EF226-D0CE-4C8C-83D1-22E638F46862}.Release|x86.Build.0 = Release|Any CPU
82148
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
83149
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|Any CPU.Build.0 = Debug|Any CPU
150+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|x64.ActiveCfg = Debug|Any CPU
151+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|x64.Build.0 = Debug|Any CPU
152+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|x86.ActiveCfg = Debug|Any CPU
153+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Debug|x86.Build.0 = Debug|Any CPU
84154
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|Any CPU.ActiveCfg = Release|Any CPU
85155
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|Any CPU.Build.0 = Release|Any CPU
156+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|x64.ActiveCfg = Release|Any CPU
157+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|x64.Build.0 = Release|Any CPU
158+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|x86.ActiveCfg = Release|Any CPU
159+
{0F24D1F8-DB6B-439E-BD6D-23E8DA88615A}.Release|x86.Build.0 = Release|Any CPU
86160
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
87161
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|Any CPU.Build.0 = Debug|Any CPU
162+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|x64.ActiveCfg = Debug|Any CPU
163+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|x64.Build.0 = Debug|Any CPU
164+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|x86.ActiveCfg = Debug|Any CPU
165+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Debug|x86.Build.0 = Debug|Any CPU
88166
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|Any CPU.ActiveCfg = Release|Any CPU
89167
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|Any CPU.Build.0 = Release|Any CPU
168+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|x64.ActiveCfg = Release|Any CPU
169+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|x64.Build.0 = Release|Any CPU
170+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|x86.ActiveCfg = Release|Any CPU
171+
{A697D9A2-4DF7-4B4D-A189-EEC7F64B5609}.Release|x86.Build.0 = Release|Any CPU
90172
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
91173
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
174+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|x64.ActiveCfg = Debug|Any CPU
175+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|x64.Build.0 = Debug|Any CPU
176+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|x86.ActiveCfg = Debug|Any CPU
177+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Debug|x86.Build.0 = Debug|Any CPU
92178
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
93179
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|Any CPU.Build.0 = Release|Any CPU
180+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|x64.ActiveCfg = Release|Any CPU
181+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|x64.Build.0 = Release|Any CPU
182+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|x86.ActiveCfg = Release|Any CPU
183+
{6CCFBCE0-C7C6-42A7-B39F-665B4C15C6FE}.Release|x86.Build.0 = Release|Any CPU
94184
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
95185
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|Any CPU.Build.0 = Debug|Any CPU
186+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|x64.ActiveCfg = Debug|Any CPU
187+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|x64.Build.0 = Debug|Any CPU
188+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|x86.ActiveCfg = Debug|Any CPU
189+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Debug|x86.Build.0 = Debug|Any CPU
96190
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|Any CPU.ActiveCfg = Release|Any CPU
97191
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|Any CPU.Build.0 = Release|Any CPU
192+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|x64.ActiveCfg = Release|Any CPU
193+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|x64.Build.0 = Release|Any CPU
194+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|x86.ActiveCfg = Release|Any CPU
195+
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F}.Release|x86.Build.0 = Release|Any CPU
98196
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
99197
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
198+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|x64.ActiveCfg = Debug|Any CPU
199+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|x64.Build.0 = Debug|Any CPU
200+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|x86.ActiveCfg = Debug|Any CPU
201+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Debug|x86.Build.0 = Debug|Any CPU
100202
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
101203
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|Any CPU.Build.0 = Release|Any CPU
204+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|x64.ActiveCfg = Release|Any CPU
205+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|x64.Build.0 = Release|Any CPU
206+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|x86.ActiveCfg = Release|Any CPU
207+
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D}.Release|x86.Build.0 = Release|Any CPU
208+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
209+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|Any CPU.Build.0 = Debug|Any CPU
210+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|x64.ActiveCfg = Debug|Any CPU
211+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|x64.Build.0 = Debug|Any CPU
212+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|x86.ActiveCfg = Debug|Any CPU
213+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Debug|x86.Build.0 = Debug|Any CPU
214+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|Any CPU.ActiveCfg = Release|Any CPU
215+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|Any CPU.Build.0 = Release|Any CPU
216+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|x64.ActiveCfg = Release|Any CPU
217+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|x64.Build.0 = Release|Any CPU
218+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|x86.ActiveCfg = Release|Any CPU
219+
{B5254DE8-A300-45E9-9960-96B7C8606A04}.Release|x86.Build.0 = Release|Any CPU
220+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
221+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|Any CPU.Build.0 = Debug|Any CPU
222+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|x64.ActiveCfg = Debug|Any CPU
223+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|x64.Build.0 = Debug|Any CPU
224+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|x86.ActiveCfg = Debug|Any CPU
225+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Debug|x86.Build.0 = Debug|Any CPU
226+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|Any CPU.ActiveCfg = Release|Any CPU
227+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|Any CPU.Build.0 = Release|Any CPU
228+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|x64.ActiveCfg = Release|Any CPU
229+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|x64.Build.0 = Release|Any CPU
230+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|x86.ActiveCfg = Release|Any CPU
231+
{28A177A6-256A-4E89-9FB2-0438670FD035}.Release|x86.Build.0 = Release|Any CPU
102232
EndGlobalSection
103233
GlobalSection(SolutionProperties) = preSolution
104234
HideSolutionNode = FALSE
@@ -116,6 +246,8 @@ Global
116246
{2CA18A71-CA83-4CC4-A777-AA4F56E4413F} = {152F3084-DC30-4A44-AEBC-E4C0EBFA0F4E}
117247
{FF7B2686-CC4B-4B6C-B360-E487339DB210} = {3F0F4BAA-02EF-4008-9CF8-E73AA92D4664}
118248
{7B896BF0-E9E1-44B7-9268-78A6B45CFE0D} = {FF7B2686-CC4B-4B6C-B360-E487339DB210}
249+
{B5254DE8-A300-45E9-9960-96B7C8606A04} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
250+
{28A177A6-256A-4E89-9FB2-0438670FD035} = {3F0F4BAA-02EF-4008-9CF8-E73AA92D4664}
119251
EndGlobalSection
120252
GlobalSection(ExtensibilityGlobals) = postSolution
121253
SolutionGuid = {E4925255-67AA-4095-816B-CC10A5490E71}

src/LocalStack.Client.Extensions/LocalStack.Client.Extensions.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
<PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All"/>
3737
</ItemGroup>
3838

39-
<!-- Net 8 and anything newer you explicitly list -->
40-
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0' Or '$(TargetFramework)' == 'net9.0' Or '$(TargetFramework)' == 'net10.0'">
39+
<!-- .NET 8+ gets modern DI abstractions -->
40+
<ItemGroup Condition="'$(Net8OrAbove)' == 'true'">
4141
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" VersionOverride="8.0.0"/>
4242
</ItemGroup>
4343

0 commit comments

Comments
 (0)