FieldWorks Managed NetFx Review
SkillFiles & storageReview or change FieldWorks managed C# code that crosses the .NET Framework 4.8 / C# 7.3 vs SDK-style net8 boundary: project files, language-feature compatibility, test discovery across both runtimes, UI-thread marshaling, and deterministic disposal. Use whenever a change touches a .csproj, adds C# to an unfamiliar project, moves code between net48 and net8 projects, or changes test runners — even if the compile passes locally.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the FieldWorks Managed NetFx Review skill
What this skill tells your AI
The instructions your AI receives, as published by sillsdev/fieldworks in .claude/skills/fieldworks-managed-netfx-review/SKILL.md and read by ahel’s review.
Compatibility Split
- Legacy product code is .NET Framework 4.8 and C# 7.3 unless a project
explicitly targets modern .NET. The compiler will not always save you:
check the project's
LangVersion/target before writing modern syntax. - New Avalonia modules may target
net8.0-windows; do not leak C# 8+ syntax or net8-only APIs into net48 projects. Note thatSrc/Common/FwAvalonia/itself is consumed from net48 hosts — verify a project's actual target rather than assuming Avalonia ⇒ net8. - Legacy
.csprojfiles require explicit source inclusion; SDK-style projects glob by default. A file added on disk is not necessarily in the build. - SDK-style projects need an explicit
<RootNamespace>for the Crowdin satellite-assembly build (seefieldworks-localization-review).
Required Checks
- User-visible strings use
.resxpatterns where product-facing. - UI and async code marshals to the correct UI thread (via
IUiSchedulerin region code) and does not use sync-over-async. - Disposable WinForms/GDI/LCModel/test resources are owned and disposed
deterministically; region code follows the
IDetailLifetimerules (idempotent disposal, late-callback suppression, event unsubscribe). - Test discovery changes are validated across both net48 and net8 test assemblies.
- Use repo scripts for evidence:
./build.ps1and./test.ps1— never baredotnet buildconclusions.
Review Red Flags
- Nullable annotations, records, file-scoped namespaces, switch
expressions, or
using varin net48/C# 7.3 projects. - Broad project/test-runner changes justified only by one local test passing.
- Hardcoded Debug paths or absolute repo assumptions in tests.
- Skipped tests used as evidence of covered behavior.
- A new project added to disk but missing from
FieldWorks.proj(traversal build) orFieldWorks.sln(IDE discovery).
Handoff
Report target frameworks touched, project-file implications, test commands/results, and any remaining compatibility risks.
Keep This Skill Current
When a new cross-target pitfall, project-file gotcha, or runtime
difference bites a migration, add it here in the same PR; route durable
lessons through
../fieldworks-winforms-to-avalonia-migration/references/lessons-learned.md.
Signals
- GitHub stars
- 111
- Forks
- 42
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
fieldworks-managed-netfx-review- Source
- github.com/sillsdev/fieldworks