- 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>
83 lines
2.7 KiB
Markdown
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*
|