# 技術スタック (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`（リポジトリ内に同梱）
- 別途インストール不要（同梱 DLL を参照）
