Phase 3: Public Surface, Packaging & Binder Cleanup#31
Merged
guy-lud merged 19 commits intoJul 14, 2026
Conversation
…t/security/perf review
- Flip public class SettingsHolder to internal sealed - Removes an internal DTO from the public API surface - Reachable from tests/benchmark via existing InternalsVisibleTo
- Drop Core.AspNet Project entry from SimpleSettings.slnx - Drop Core.AspNet ProjectReference from UnitTests.csproj - Delete src/Core/ExistForAll.SimpleSettings.Core.AspNet/ directory - Test-local Core/AspNet/Environments.cs duplicate untouched - Published 2.0.0-alpha.0.* alphas: unlist is owner-optional follow-up
- Split four Microsoft.Extensions.* pins into per-TFM conditional ItemGroups - net8 floors: Configuration 8.0.0, Configuration.Json 8.0.1, DI 8.0.1, DI.Abstractions 8.0.2 - net10 stays 10.0.9 for all four - Frees net8 consumers of the packable Binders + GenericHost packages from 10.x
…gument - space-separated --k v, quoted-with-spaces single token - prefixed-next-token = new key, prefixed-value non-binding - SkipFirstArgument true/false, empty-token no-crash - CLI-path secret-redaction regression (S2)
…02/D-04,D-05) - SkipFirstArgument (default false, explicit override; no silent arg[0] drop) - Parse rewritten to index/lookahead loop; space-separated --k v binds - empty-safe zero-alloc prefix detection (length-delta + Array.IndexOf, cached prefix array) - prefixed next-token treated as new key; ArgumentPrefixes XML-doc note
…p (SRC-02/Open Q #1) - replace Environment.CommandLine.Split(' ') with Environment.GetCommandLineArgs() - wrap caller action to enable SkipFirstArgument=true (exe skip owned by this entry point) - quoted-value-with-spaces criterion now holds end-to-end unconditionally
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.
Phase 3 — Public Surface, Packaging & Binder Cleanup
Batches the remaining pre-
v2.0.0-betabreaking changes for the public surface, packaging, and the command-line binder.Changes
SettingsHolderis nowinternal sealed(waspublic). OnlySettingsCollectionconsumed it; tests reach it viaInternalsVisibleTo.Core.AspNetpackage (zero public surface — its only type was an internalEnvironments) from the solution plus a dead testProjectReference. The test-localCore/AspNet/Environments.csduplicate is retained.Microsoft.Extensions.*now float per-TFM (net8 → latest8.0.xper package:Configuration8.0.0,DependencyInjection.Abstractions8.0.2; net10 → 10.0.9), freeing net8 consumers from being transitively forced onto 10.x. Adds a restore-time NuGet audit gate (fails onNU1901–NU1904).--key value+ quoted-value-with-spaces binding (in addition to inline=/:); newSkipFirstArgumentoption (default false);AddCommandLine()now sourcesEnvironment.GetCommandLineArgs()and owns the exe-skip internally.Breaking changes (for beta migration notes)
SettingsHolderis no longer public.Core.AspNetpackage is removed.Microsoft.Extensions.* 8.0.x(previously 10.x).AddCommandLine()tokenizes viaGetCommandLineArgs()— quoted values with spaces now bind (previously shredded bySplit(' ')); the exe path is skipped only at this entry point (AddArgumentsbinds exactly what it is handed).Verification
03-VERIFICATION.md).Owner follow-up (not automated)
ExistForAll.SimpleSettings.Core.AspNet2.0.0-alpha.0.*prereleases on NuGet.org (requires the publishing account).