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