# 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*
