はじめに
うちのプログラミングの講義では学生の提出したプログラムを採点する前にもう一度ビルドしている.
というのも,ビルドせずに提出してくる学生がいるから.
いや,僕もそういうやつだったんだけど,裏でこんなめんどくさいことをしていたとは….
というわけで,先生方にTAとして貢献するために自動ビルドするやつを作ろうと決心した.
環境
Visual Studio 2019 Enterprise (Version 16.11.7)
.NET Framework (Version 4.8.04084)
どうするのか
コンソールアプリケーションのビルドならcsc.exeにプログラムファイルを渡してやればすぐできる.
問題は,こいつが複数ファイルを受け取れないっぽいこと.マジかよ.
なんかやる方法はあるやろ,とインターネットの大海を泳ぎまくっていたら解決策を見つけた.
MSBuild.exeとかいうやつならフォームアプリケーションの自動ビルドができるらしい.
僕の環境ではC:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exeにあった.
ただ,昔使っていたパソコンにはVisual Studio 2015が入っているんだけど,そっちにはいくら探してもこんなやつはなかった.
2019より前の環境を使ってる人は頑張って探して欲しい.
使い方としては,MSBuild.exeに*.csprojファイルを渡すだけ.
*.csファイルを複数渡すわけではない.
*.csprojファイルはVisual Studioからフォームアプリケーションを作るとファイル生成時に自動生成される.
cmd.exe
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" test.csproj
上のやと,test.csprojと同じディレクトリにいないと通らないけど.その辺はフィーリングで.
今思い出したけど,適当なディレクトリで引数なしで実行しても,直下のディレクトリから勝手に*.csprojファイルを探してくれる仕様だった.
ので上のはなし.
C#の自動ビルドプログラム by C#
プログラムの流れ
プログラムの流れはこんな感じ
バッチファイルのパス取得
*.csprojファイルがあるディレクトリパス取得
バッチファイルの実行
「バッチファイルってなんやねん,C#からコマンドプロンプト起動してそこで実行すりゃええやんけ」って思った方.
これ書いてる俺もそう思った.
過去の自分は他人,そういうことで.
一応バッチファイルの中身
hoge.bat
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe"
exit
プログラム
githubに置いときます.
煮るなり焼くなりお好きにどうぞ(炎上は困る).
↧