Docs: reflect net48; convert tools projects to net48

Documentation now describes the .NET Framework 4.8 stack (was .NET 8):
- README build prerequisites + framework-dependent/no-runtime-install note,
  test count 136 -> 241.
- PLAN.md architecture diagram, stack decision (with PolySharp/shims note),
  suite total 136 -> 241.
- deploy/README-DEPLOY.txt: app is net48 framework-dependent (4.8 is in-box on
  Win10/11), and build prerequisites.

Also migrate the three tools (RioJoySmokeTest, RioSerialMonitor, XcfRegionExtract)
to net48 so they keep building against the now-net48 RioJoy.Core (a net8 project
cannot reference a net48 one). Added PolySharp + System.Memory/System.Text.Json
shims and replaced net-core-only APIs (string.Contains/IndexOf with comparison,
Array.Fill, generic Enum.IsDefined, int.TryParse(span)). All three build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-06-30 13:11:25 -05:00
co-authored by Claude Opus 4.8
parent fe87c79f55
commit 270abfc5ad
9 changed files with 51 additions and 16 deletions
+6 -3
View File
@@ -27,8 +27,11 @@ Red Planet — talk to the RIO directly and do not use this app.)
## Building
Requires the **.NET 8 SDK** and Windows. The driver builds separately with the
**WDK** (see [`driver/README.md`](driver/README.md)).
Requires the **.NET SDK** (8.0 or newer) plus the **.NET Framework 4.8
targeting/developer pack**, on Windows. The apps target **.NET Framework 4.8**,
which is in-box on every Windows 10/11 machine — so deployed builds are
framework-dependent and need **no runtime install** on the target. The driver
builds separately with the **WDK** (see [`driver/README.md`](driver/README.md)).
```sh
dotnet build RioJoy.sln -c Release
@@ -37,7 +40,7 @@ dotnet test RioJoy.sln
## Status
Phases 15 are implemented and tested (136 unit tests). The `RioGamepad` virtual
Phases 15 are implemented and tested (241 unit tests). The `RioGamepad` virtual
HID driver is built (KMDF + VHF), **test-signed, installed, and verified**: it
enumerates in `joy.cpl`, and the C# HID feeder (`DeviceIoControl`
`RioGamepad.sys`) drives its axes, buttons, and hat end-to-end (see