From e3255d11b0e0446279d95b920ebc414509d16417 Mon Sep 17 00:00:00 2001 From: Sascha Kiefer Date: Tue, 16 Jun 2026 08:48:05 +0200 Subject: [PATCH 1/2] feat: add support for dotnet 10 Add net10.0 to the library target frameworks and bump the package version to 4.1.0. Update README and CLAUDE.md accordingly. Support for .NET 11 is deferred until its SDK is generally available and present on CI, since targeting it now would fail every build. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- README.md | 1 + src/Serialize.Linq/Serialize.Linq.csproj | 31 ++++++++++++++++++------ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index da5720f..d02f8a5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,7 +25,7 @@ dotnet test src/Serialize.Linq.Tests/Serialize.Linq.Tests.csproj --filter "Fully dotnet test src/Serialize.Linq.Tests/Serialize.Linq.Tests.csproj --filter "Name=YourTestMethodName" ``` -- The main library multi-targets `net48;net481;net6.0;net7.0;net8.0;net9.0;netstandard2.0;netstandard2.1` (see `src/Serialize.Linq/Serialize.Linq.csproj`). Building all targets requires the full set of .NET SDKs / targeting packs installed; restrict with `-f ` when iterating locally. +- The main library multi-targets `net48;net481;net6.0;net7.0;net8.0;net9.0;net10.0;netstandard2.0;netstandard2.1` (see `src/Serialize.Linq/Serialize.Linq.csproj`). Building all targets requires the full set of .NET SDKs / targeting packs installed; restrict with `-f ` when iterating locally. - `GeneratePackageOnBuild` is true, so building the library produces a `.nupkg`. The assembly is strong-name signed with `Serialize.Linq Signing Key.snk`. - Custom configurations `Debug Optimize Size` / `Release Optimize Size` define the `SERIALIZE_LINQ_OPTIMIZE_SIZE` constant, which shortens serialized XML/JSON property names. When editing `Node`/`ExpressionNode` classes, check for `#if SERIALIZE_LINQ_OPTIMIZE_SIZE` blocks — serialization member names differ between the two builds. diff --git a/README.md b/README.md index 8fb5a8f..42a6dc4 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Serialize.Linq has a comprehensive test suite. You can run the tests using your ## Supported Platforms (or known to work with) +- .NET 10.0 - .NET 9.0 - .NET 8.0 - .NET 7.0 diff --git a/src/Serialize.Linq/Serialize.Linq.csproj b/src/Serialize.Linq/Serialize.Linq.csproj index 649fd99..1d0f076 100644 --- a/src/Serialize.Linq/Serialize.Linq.csproj +++ b/src/Serialize.Linq/Serialize.Linq.csproj @@ -5,14 +5,13 @@ Serialize.Linq Serialize.Linq Sascha Kiefer - Copyright © 2012-2025 + Copyright © 2012-2026 Serialize.Linq Signing Key.snk true true linq;serialize - - support for .NET 9.0 - - remove BinarySerializer + - support for .NET 10.0 https://github.com/esskar/Serialize.Linq @@ -29,10 +28,10 @@ - net48;net481;net6.0;net7.0;net8.0;net9.0;netstandard2.0;netstandard2.1 - 4.0.0 - 4.0.0.0 - 4.0.0.0 + net48;net481;net6.0;net7.0;net8.0;net9.0;net10.0;netstandard2.0;netstandard2.1 + 4.1.0 + 4.1.0.0 + 4.1.0.0 LICENSE @@ -154,6 +153,21 @@ 7 + + 7 + + + + 7 + + + + 7 + + @@ -166,6 +180,9 @@ + + + From 7e00bb0384f4cfb745724d477e13536a44929f87 Mon Sep 17 00:00:00 2001 From: Sascha Kiefer Date: Tue, 16 Jun 2026 09:31:16 +0200 Subject: [PATCH 2/2] ci: build the net10.0 target on the workflow runner Install the .NET 10 SDK in the build workflow so the newly added net10.0 target framework compiles on CI. Document that the NuGet publish uses the csproj as-is and never overrides an existing version. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed2a02f..df0dca1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,7 @@ jobs: dotnet-version: | 8.0.x 9.0.x + 10.0.x - name: Restore run: dotnet restore src/Serialize.Linq.sln @@ -61,6 +62,11 @@ jobs: # Deploy only on pushes to main (mirrors the previous AppVeyor behaviour). if: github.event_name == 'push' && github.ref == 'refs/heads/main' shell: pwsh + # Publishes the package version from the csproj as-is; the + # version is never overridden. --skip-duplicate means an already-published + # version is skipped rather than overwritten, so only a bumped + # results in a new release. + # # Expand the glob explicitly: neither dotnet nuget push nor PowerShell # expands a wildcard argument, so pass each resolved file path. The # matching .snupkg is pushed automatically alongside its .nupkg.