Retarget net40/net451 to net462 - #235
Merged
Merged
Conversation
net40 has no known consumers anywhere in the sillsdev org, and net451 was already resolving to the nearest-lower fallback for every actively maintained .NET Framework consumer (FieldWorks, libpalaso, SayMore, LibChorus, HearThis), none of which target below net462. Replacing net451 with net462 matches those consumers directly. This also lets Microsoft.Extensions.DependencyModel unify on 10.0.9 across all target frameworks (it now officially supports net462), removing the net451-era pin to 2.1.0 and its accompanying Newtonsoft.Json override. System.ValueTuple is upgraded to 4.6.2 to match, since 4.6.2 requires net462 as its floor. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
3 tasks
This comment was marked as resolved.
This comment was marked as resolved.
Now that net40 is dropped entirely as a target framework, the NET40 symbol is never defined, making every #if NET40 / #if !NET40 branch permanently dead code. Collapse each to its always-taken branch and drop the now-moot explanatory comments (.NET 4.5/4.5.1 API availability notes). Also update leftover net461-specific comments left over from the net462 retarget. Addresses reviewer feedback on PR #235. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This comment was marked as resolved.
This comment was marked as resolved.
Two RunNUnitTC/RunNUnit targets still pointed at the net461 output directory after the net462 retarget. This file is deleted entirely in the next stacked PR, but keep it internally consistent in the meantime. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
imnasnainaec
approved these changes
Sep 22, 2026
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.
Summary
net40target framework: a GitHub code search across the sillsdev org found no remaining consumers, and nothing in icu-dotnet's own test suite exercised it either.net451target framework withnet462, matching the framework already used by current consumers (libpalaso, LibChorus) and remaining the nearest compatible target for others (FieldWorks, SayMore, HearThis). This is a breaking change for anything still targetingnet461or lower.Microsoft.Extensions.DependencyModelon 10.0.9 across all target frameworks (it now officially supportsnet462), removing the old net451-era pin to 2.1.0 and its accompanyingNewtonsoft.Jsonoverride.System.ValueTuple4.5.0 → 4.6.2 to match (4.6.2 requires net462 as its floor).Microsoft.SourceLink.GitHubPackageReference— verified the .NET 8+ SDK now embeds correctraw.githubusercontent.comsource link mappings without it.System.IO.FileSystem/System.IO.FileSystem.Primitives4.3.0 references from the test project (netstandard1.x-era facades, no longer needed).This is the first of two stacked PRs; the second (build-path cleanup, deleting
build/icu-dotnet.proj) is stacked on top of this one.Test plan
dotnet build/dotnet test/dotnet packall succeed on net462/net8.0/net10.0System.ValueTuplecompatibility warning on net462.snupkgPDBs for all four frameworks🤖 Generated with Claude Code