nc_program_manager/.paul/codebase/STACK.md
dtrentin dabcf989d9 docs: map existing codebase
- STACK.md - Technologies and dependencies (.NET 4.7.2, NuGet, Costura.Fody)
- ARCHITECTURE.md - Layered CLI with ICncMachine factory pattern
- STRUCTURE.md - Directory layout and where to add new code
- CONVENTIONS.md - C# style, naming, result wrapper pattern
- TESTING.md - NUnit 3 + Moq, stubs, ignored FOCAS tests
- INTEGRATIONS.md - FOCAS, LSV2, FTP, RSA licensing
- CONCERNS.md - Blocking async, silent catch, no logging, Windows-only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 22:48:20 +02:00

83 lines
2.7 KiB
Markdown

# Technology Stack
**Analysis Date:** 2026-05-18
## Languages
**Primary:**
- C# (.NET Framework 4.7.2) - All application code
**Secondary:**
- XML - Project files, App.config, binding redirects
## Runtime
**Environment:**
- .NET Framework 4.7.2 — Windows only (FOCAS1 DLL + WMI)
- No cross-platform support; Windows desktop/server target
**Package Manager:**
- NuGet (packages.config format, not PackageReference)
- Lockfile: `packages.config` present in root and test project
## Frameworks
**Core:**
- None (vanilla .NET console application)
**Testing:**
- NUnit 3.13.3 — Unit and integration tests (`NcProgramManager.Tests/packages.config`)
- NUnit3TestAdapter 4.2.1 — VS / dotnet test runner
- Moq 4.18.4 — Interface mocking
**Build/IL Weaving:**
- Fody 6.6.4 — IL code weaver (`NcProgramManager.csproj`)
- Costura.Fody 5.7.0 — Embeds NuGet assemblies + native DLLs into output EXE
## Key Dependencies
**Critical:**
- `System.Management 7.0.1` — WMI queries for machine fingerprinting (`Licensing/MachineFingerprint.cs`)
- `Microsoft.Bcl.AsyncInterfaces 7.0.0` — Async backport for .NET 4.7.2 (`packages.config`)
- `System.Memory 4.5.5` — Span<T> and Memory<T> compatibility (`packages.config`)
- `System.Runtime.CompilerServices.Unsafe 6.0.0` — Low-level ops (`packages.config`)
- `System.Net.Sockets 4.3.0` — TCP networking for LSV2/FTP (`packages.config`)
**Infrastructure:**
- `NETStandard.Library 2.0.3` — .NET Standard facade (`packages.config`)
- `System.Net.Http 4.3.4` — HTTP base infrastructure (`packages.config`)
- `Castle.Core 5.1.1` — Moq dependency (`NcProgramManager.Tests/packages.config`)
**Native (embedded via Costura.Fody):**
- `Cnc/Fanuc/libs/Fwlib32.dll` — Fanuc FOCAS1 library (32-bit, ~629KB)
- `Cnc/Fanuc/libs/fwlibe1.dll` — Extended FOCAS (~1MB)
- `Cnc/Fanuc/libs/fwlibNCG.dll` — FOCAS NCG support (~2MB)
## Configuration
**Environment:**
- No environment variables
- All runtime config passed via CLI arguments (parsed by `ArgParser.cs`)
- License file: `license.lic` next to EXE (no CLI override)
**Build:**
- `NcProgramManager.csproj` — MSBuild 15.0, OutputType=Exe
- `App.config` — Runtime binding redirects only (no business settings)
- `FodyWeavers.xml` — Costura assembly embedding config
## Platform Requirements
**Development:**
- Windows (FOCAS1 DLL requires 32-bit Windows; WMI for licensing)
- Visual Studio 2017+ or MSBuild 15+
- Fanuc FOCAS DLL unavailable on Linux (test suite ignores FOCAS tests)
**Production:**
- Windows (desktop or server)
- `license.lic` placed alongside EXE
- 32-bit process or AnyCPU with 32-bit preferred (FOCAS1 DLL constraint)
---
*Stack analysis: 2026-05-18*
*Update after major dependency changes*