# 技術スタック (Tech Stack)

## 開発環境 (Development Environment)

- IDE: Visual Studio 2022
- ターゲットフレームワーク: .NET Framework 4.8

## NuGet パッケージ (NuGet Packages)

`packages.config` で管理する．Visual Studio のパッケージ復元で自動取得される．

**OpenCvSharp4 関連**

- `OpenCvSharp4` (4.13.0): OpenCV の C# ラッパー本体
- `OpenCvSharp4.Extensions` (4.13.0): Bitmap 変換等の拡張機能
- `OpenCvSharp4.runtime.win` (4.13.0): Windows 向けネイティブランタイム
- `OpenCvSharp4.Windows` (4.13.0): Windows Forms 向け統合パッケージ
- `OpenCvSharp4.WpfExtensions` (4.13.0): WPF 向け拡張機能

※ 4.13.0 から本体アセンブリの供給が `lib/net48` から `lib/netstandard2.0` に変わった．これにより `System.Memory` 等への推移的依存が新たに発生するため，下記の補完ライブラリを**テストプロジェクトにも**明示的に参照させる必要がある（無いと `Mat` 操作時に実行時 `FileNotFoundException` になる）．

**.NET 補完ライブラリ**

- `System.Buffers` (4.6.1)
- `System.Drawing.Common` (8.0.31)
- `System.Memory` (4.6.3)
- `System.Numerics.Vectors` (4.6.1)
- `System.Runtime.CompilerServices.Unsafe` (6.1.2)
- `System.ValueTuple` (4.6.2)

※ `System.Drawing.Common` と `System.ValueTuple` を除く 4 件は OpenCvSharp 4.13 の推移的依存であり，バージョンは相互に不可分（`System.Memory` 4.6.3 が他 3 件の下限を指定している）．個別に上げ下げしないこと．

## テストプロジェクト TIASshot.Tests (Test Project)

テストプロジェクトも `packages.config` で管理する（本体と同じレガシー形式・x64）．

- `NUnit` (4.6.1): テストフレームワーク
  - net48 向けの依存として `System.Threading.Tasks.Extensions` (4.6.3)・`System.ValueTuple` (4.6.2) も参照する
- `NUnit3TestAdapter` (4.6.0): テストランナー連携（Visual Studio / vstest）
- `Microsoft.NET.Test.Sdk` (17.14.1): テスト実行基盤（依存として `Microsoft.CodeCoverage` 18.10.1 が入る）
- ※ `OpenCvSharp4` / `OpenCvSharp4.runtime.win` (4.13.0) も参照する．`Mat` 演算はネイティブ DLL に依存するため，テストプロジェクトも **x64** でビルドする．
- ※ あわせて `System.Buffers` / `System.Memory` / `System.Numerics.Vectors` / `System.Runtime.CompilerServices.Unsafe` を本体と同一バージョンで参照する（OpenCvSharp 4.13 の推移的依存．`packages.config` 方式では推移的依存が自動解決されないため明示が要る）．

## 外部 SDK（別途インストールが必要） (External SDKs)

**IC Imaging Control SDK (The Imaging Source)**

- 用途: ImagingSource 製カメラの制御（DFK33UX178，DFK23UX249）
- 名前空間: `TIS.Imaging`
- インストール: The Imaging Source の公式サイトから取得する

**Lumenera SDK**

- 用途: Lumenera 製カメラの制御（Lw110）
- DLL: `lumenera.api.dll`（.NET 側．リポジトリ内に同梱）
- ビルド・セルフテストは同梱 DLL だけでできる．実機を使うにはネイティブの `lucamapi.dll` を含む LuCam Software の導入が別途要る（[ENV_02](ENV_02_環境構築手順.md) の「カメラ・光源のドライバ」）

**カメラ・光源のドライバ（実機を使う場合に別途インストール）**

- LuCam Software（Lumenera）・Cam33U Driver（ImagingSource の 33U/37U/38U．IC Imaging Control SDK とは別）・CP210x Universal Windows Driver（光源の USB-シリアル変換）．入手先・バージョンは [ENV_02](ENV_02_環境構築手順.md) を参照
