Add .NET Framework 4.8 compatibility#27
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #27 +/- ##
==========================================
- Coverage 98.82% 98.78% -0.05%
==========================================
Files 69 72 +3
Lines 57383 57430 +47
Branches 290 295 +5
==========================================
+ Hits 56709 56731 +22
- Misses 520 541 +21
- Partials 154 158 +4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
bonk-dev
requested changes
Jul 20, 2026
bonk-dev
left a comment
Owner
There was a problem hiding this comment.
Hi, thanks for the PR! Before I merge this I'd like to see the tests passing both on net8.0 and a runnable netstandard2.0 target, like .NET Framework 4.8.
I don't think the central <TargetFramework> in Directory.Build.props makes sense anymore, since we will be targeting net8.0;netstandard2.0 for the libs, something like net8.0;net48 for the test projects and a third variant for the PoC probably.
Multi-target HarpoS7, HarpoS7.Family0, HarpoS7.Utilities, and HarpoS7.PublicKeys for net8.0 and netstandard2.0 so every published HarpoS7 package can be consumed by .NET Framework 4.8 applications. Remove the central TargetFramework from Directory.Build.props and declare targets per project type. Run the four published-library test suites on both net8.0 and net48 while keeping the PoC, key dumper, CLI, and SSL test explicitly on net8.0. Add downlevel compatibility implementations for cryptography, BigInteger serialization, stream memory APIs, embedded-resource reads, and 128-bit lookup-table operations. Preserve AES-ECB semantics in the netstandard2.0 compatibility path, remove the machine-specific net7.0 assembly reference, and retain the target-host TLS overload on netstandard2.0. Upgrade the NUnit adapter for current runtime discovery and add a Windows GitHub Actions test matrix for all four net48 library suites, including HarpoS7.PublicKeys. Fail the job if a suite reports zero discovered tests. Add a permanent .NET Framework 4.8 smoke application that restores both generated NuGet packages, loads a bundled public key, and exercises the real-PLC authentication path. Gate NuGet publishing on the net48 tests and package smoke check. Document the supported targets, add the required package dependencies, and bump package and assembly versions to 1.1.4. Validated with the .NET 8.0.407 SDK: a warning-free solution build, 197 passing net8.0 tests, 195 passing net48 library tests, successful packing of both NuGets with net8.0 and netstandard2.0 assets, and a passing net48 package consumer run.
Contributor
Author
|
should be fixed |
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.
Multi-target the HarpoS7, Family0, and Utilities libraries for net8.0 and netstandard2.0 so the package can be consumed by .NET Framework 4.8 applications.
Add downlevel compatibility implementations for cryptography, BigInteger serialization, stream memory APIs, embedded-resource reads, and 128-bit lookup-table operations. Remove the machine-specific net7.0 assembly reference and retain the target-host TLS overload on netstandard2.0.
Document supported frameworks, add the required package dependencies, and bump package and assembly versions to 1.1.4.
Validated with a clean .NET 8 SDK build, 197 passing tests, NuGet packing, and a .NET Framework 4.8 runtime smoke test covering the real-PLC authentication path.