Newer
Older
TIASShot / docs / 02_ENV / ENV_04_開発コマンド.md

開発コマンド (Development Commands)

日常の開発で使うビルド・テスト・実行コマンドをまとめる.人間とエージェント(tester・coder,/auto-refactor・/auto-audit)がコマンドを推測せずに済むための唯一の参照先とする.コマンドが増減・変更されたら本ファイルを更新する.

前提 (Prerequisites)

  • ビルドは x64 のみ(TIASshot.sln は Debug|x64 / Release|x64 のみ定義).OpenCvSharp 等がネイティブ DLL に依存するため AnyCPU は使わない.
  • レガシー形式(packages.config)のため dotnet build / dotnet test は使えない.MSBuild と vstest.console.exe を使う.
  • コマンドは PowerShell で実行する.VS のエディション差(Community / Professional / Enterprise)と Build Tools のみの環境を吸収するため,vswhere で MSBuild・vstest の場所を解決する.

ツールパスの解決 (Locating Build Tools)

$vs = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -property installationPath
$msbuild = Join-Path $vs "MSBuild\Current\Bin\MSBuild.exe"
$vstest  = Join-Path $vs "Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"

※ -products * は必須.これが無いと vswhere は通常の VS 製品しか列挙せず,VS Build Tools のみの環境では何も返さない($vs が空になり Join-Path が失敗する).

以降のコマンドは $msbuild / $vstest を解決済みとして記載する.

NuGet 復元 (Restore)

nuget restore TIASshot.sln

nuget.exe が PATH に無い場合はリポジトリルートの nuget.exe を使う(setup.ps1 が未取得時に自動ダウンロードする).

ビルド (Build)

# 開発・検証(WHITEBOARD / MEMMONITOR 有効)
& $msbuild TIASshot.sln /t:Build /p:Configuration=Debug /p:Platform=x64

# 配布版(診断機能なし)
& $msbuild TIASshot.sln /t:Build /p:Configuration=Release /p:Platform=x64

# クリーンビルド
& $msbuild TIASshot.sln /t:Rebuild /p:Configuration=Debug /p:Platform=x64

構成ごとのビルドフラグの意味は ENV_06_ビルド構成とビルドフラグ を参照する.

テスト (Test)

自動テストの方針・対象範囲は .claude/rules/testing.md を参照する(本ファイルはコマンドのみ).

# テストプロジェクトをビルドしてから x64 で実行する
& $msbuild TIASshot.sln /t:Build /p:Configuration=Debug /p:Platform=x64
& $vstest "TIASshot.Tests\bin\x64\Debug\TIASshot.Tests.dll" /Platform:x64
  • ネイティブ DLL を x64 でロードするため /Platform:x64 は必須.
  • Visual Studio 上ではテストエクスプローラーから実行できる(プラットフォームを x64 にすること).

クリーン環境での検証 (Clean Verification)

ベースライン計測・マージ前検証・「テストが通ることの確認」は,必ず bin / obj を削除してから行う.

bin に前回のビルド成果物が残っていると,過去のビルドでコピーされた DLL が残存してアセンブリ解決が偶然成立し,依存の記述漏れを隠してしまう(Issue #39: テストプロジェクトに OpenCvSharp の推移的依存が無いにもかかわらず,汚れた bin では全緑に見えていた).同じマシンで作業し続ける限り気づけないため,計測・検証の前に毎回消す.

# bin / obj を削除してからビルド・テストする
Get-ChildItem -Path TIASshot, TIASshot.Tests -Include bin, obj -Directory -Recurse | Remove-Item -Recurse -Force
& $msbuild TIASshot.sln /t:Build /p:Configuration=Debug /p:Platform=x64
& $vstest "TIASshot.Tests\bin\x64\Debug\TIASshot.Tests.dll" /Platform:x64

依存パッケージを追加・変更した PR の検証では,これに加えて packages も退避して nuget restore からやり直し,新しいマシンでの git clone 直後と同じ状態を再現する.

# clone 相当の完全クリーン検証(packages も退避する)
Get-ChildItem -Path TIASshot, TIASshot.Tests -Include bin, obj -Directory -Recurse | Remove-Item -Recurse -Force
Rename-Item packages packages.bak      # 復元に失敗したときのために削除せず退避する
nuget restore TIASshot.sln
& $msbuild TIASshot.sln /t:Build /p:Configuration=Debug /p:Platform=x64
& $vstest "TIASshot.Tests\bin\x64\Debug\TIASshot.Tests.dll" /Platform:x64
  • 合格条件: テストが全件成功し,ビルド警告が増えていないこと.
  • packages の復元にはネットワークと時間がかかるため,通常の開発サイクルでは bin / obj の削除までで運用し,完全クリーン検証は依存変更時とマージ前に行う.
  • 検証が終わったら退避した packages.bak は削除してよい(nuget restore で再取得できるため).

実行 (Run)

ビルド後,構成に対応した実行ファイルを起動する.実行時参照ファイル(config.xml・カメラ設定 XML・TCC の CSV)が同ディレクトリに配置済みであること(ENV_02_環境構築手順).

# 開発・検証版
& "TIASshot\bin\x64\Debug\TIASshot.exe"

# 配布版
& "TIASshot\bin\x64\Release\TIASshot.exe"

実機カメラ・光源に接続して動作する UI アプリのため,完全な動作確認には機材が必要.