- 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>
2.7 KiB
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.configpresent 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.licnext to EXE (no CLI override)
Build:
NcProgramManager.csproj— MSBuild 15.0, OutputType=ExeApp.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.licplaced alongside EXE- 32-bit process or AnyCPU with 32-bit preferred (FOCAS1 DLL constraint)
Stack analysis: 2026-05-18 Update after major dependency changes