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

2.7 KiB

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