🐷

[.NET] コマンドラインからの ビルド、ユニットテスト

2024/05/18に公開

背景

CI/CD などでビルドや UT を自動化したい。
そのために、CLI からバッチ実行できるようにする。

事前準備

.NET Framework 4.8 の場合のみ、Nuget CLI をインストールします。

手順

フレームワーク 利用するバッチファイル
.NET Framework 4.8 BuildAndTest_dotNetFramework.cmd
.NET 8 BuildAndTest_dotNet.cmd
  1. 以降で示すバッチファイル例を参考に、自分用の BuildAndTest.cmd を作って、.sln と同じフォルダに配置します。
  2. .NET Framework の場合、「Developer Command Prompt for VS 2022」(名前は VS バージョンに依存)を開いて、そこからバッチファイルを実行します。
  3. .NET の場合、普通にバッチファイルを実行します。

補足

  • 各手順がわかりやすいように処理ごとにメッセージを表示して、Enter を押すと各処理を実行するようにしています。なので、実際に活用する場合は、pause を消してください。
  • .NET Framework の手順では nuget による依存パッケージの復元が必要。.NET では、dotnet コマンド自体が依存パッケージの自動復元をおこなうため、nuget が不要となっている。

サンプルファイル

ソリューション名:BankLibrary.sln というライブラリソリューションの例となります。
このソリューションには、単体テストプロジェクト(TestBankLibrary)が含まれているという環境での例になります。

├ BankLibrary.sln
├ BuildAndTest.cmd (ソリューションと同じ場所に置くことを想定)
├ [BankLibrary]/BankLibrary.csproj
└ [TestBankLibrary]/TestBankLibrary.csproj

BuildAndTest_dotNet.cmd
REM for project with .NET 8

@echo (1) change current directory to fit to solution directory.
@pause
@cd /d %~dp0

@echo (2) build with Release configration
@pause
@dotnet clean .\BankLibrary.sln --configuration Release
@dotnet build .\BankLibrary.sln --configuration Release /p:Platform="Any CPU"

@echo (3) run unit-test
@pause
@dotnet test -c Release
BuildAndTest_dotNetFramework.cmd
REM for project with .NET framework 4.8

@echo (1) change current directory to fit to solution directory.
@pause
@cd /d %~dp0

@echo (2) restore Nuget Package
@pause
@nuget restore .

@echo (3) build with Release configration
@pause
@msbuild BankLibrary.sln /t:clean;rebuild /p:Configuration=Release;Platform="Any CPU"

@echo (4) run unit-test with test artifact
@pause
@vstest.console.exe .\TestBankLibrary\bin\Release\net8.0\TestBankLibrary.dll

Discussion