(本来Embarcadero C++を使った、BCCFormとBCCSkeltonの解説ブログの筈なんですが)完全にC#と.NET Frameworkというか、Microsoft帝国のプラットフォーム探検ブログになっているので、脱線ついでにMSBuild(注)についても書かせてもらいます。

注:Windows 10/11であれば、"C:\Windows\Microsoft.NET\Framework(64)\v4.0.30319\MSBuild.exe"に見つかります。

 

1.「コンパイル」と「ビルド」(ご存じ方は2へスキップしてください)

先ず「コンパイル」と「ビルド」についてザックリと説明します。

人間が作る、人間が理解できる処理の指示文を「ソースコード」といい、その文法はプログラミング言語により異なります。(私が時々載せる奴がC++またはC#のソースコードです。)

PCはこのソースコードを理解せず、「数字だけのコード(バイナリーコードとか機械語と言います)」しか分からないので、「ソースコード」を「バイナリコード」へ変換する作業が必要です。これを「コンパイル」と言います。従ってC++言語で書かれたソースコードをバイナリーコードに変換するものを「C++コンパイラー」、C#言語で書かれたものを変換するものを「C#コンパイラー」などと言います。

簡単なプログラムなら、一つのソースコード(それがファイルとして記録されたものを「ソースファイル」と言います)から直接実行可能なバイナリーコード(同じくそれがファイルになったものがバイナリファイルです)にして、即実行(「実行ファイル」などと言います)することが出来ますが、リソース(同様に「リソースファイル」)が別にあったり、最終の実行ファイルにはいくつかのバイナリーファイルをまとめる必要があったりすると、それらを関連付ける(Link-リンクする、リンカーなどと言います)必要があります。

ビルド」とは、このような最後の実行ファイルを作る為に、種々のソースファイルをコンパイルしたり、それによってできたバイナリーファイルをリンクしたりする手順をまとめて行い、コンパイラーやその他のツールプログラムに指示を与えるプログラムを言います。

BCCForm and BCCSkeltonの話でいえば、bcc32c.exeというコンパイラーでコンパイルする為に、"*.mak"というビルドファイルを使って"make.exe"がビルドし、Microsoft .NET FrameworkのC#であれば、csc.exeというコンパイラーでコンパイルする為に"*.csproj"という、(またしても!)Xamlで記述されたビルドファイルを使って”MSBuild.exe”がビルドします。(

csc.exeと同じく、Windows10や11の"C:\Windows\Microsoft.NET\Framework\v4.0.30319"フォールダーにあります。なお、"*.sln"というソリューションファイルがありますが、これは(最終的に実行ファイルとなる)複数のプロジェクトファイル(例:*.csproj、*.vbproj)が一つのソリューションを構成している場合の統括ファイルと考えてよいです。なお、Main()メソッドだけで何もしないプログラムのソースとそれをビルドする際のプロジェクトファイル、ソリューションファイルの例がGitHubに載っているで参考になるかもしれません。

 

2.MSBuildとは

C#のみならず、Microsoftの他の言語も含めて(注)、Visual Studioで開発する際に利用されるMicrosoftのビルダーです。

Microsoftも解説はしていますが、やや「寿限無感」が強いですね。代わりに、大分古いですがMSBuild創成期のこの記事でMSBuildの何たるかが分かると思います。

注:Copilotによれば「MSBuildは、Microsoftが提供するビルドツールであり、.NET FrameworkやVisual Studioのプロジェクトをビルドするために使用されます。MSBuildは、C#、VB.NET、C++/CLI、F#などのプログラム言語で書かれたプロジェクトをビルドできます。ただし、MSBuildでビルドできるプログラム言語には制限がありません。」だそうです。

 

3.MSBuildの使い方

頭がまともな方は、(特にWPFプロジェクトの場合)統合開発環境(IDE-Intedrated Develpment Environmentの略)であるVisual Studioを使ってください。自動的に*.sln、*.csprojファイルを作成して、(私はやったことがありませんが)「ビルド」ボタンを押せば自動的にMSBuildを呼び出してビルド(コンパイル、リンク etcの一連処理)をやってくれるはずです。

 

頭がおかしい方は、これを読んでXamlを学習し、*.csprojファイルを作成して、次のようなバッチファイルを作ってビルドしてください。

 

【Build.bat】-なお、このバッチファイルはANSIでセーブしてください。UTF-8でも文字化けします。

ECHO OFF
ECHO ----------------------------------
ECHO  MSBuildを起動します。
ECHO  C#の場合、*.csprojファイルのある
ECHO  フォールダーで実行してください。
ECHO ----------------------------------
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"
pause

 

因みにこの記事のサンプルがあったので、実際にやってみました。見事ビルドされました!

(ビルドしたフォールダー)

(実行ファイル)

 

が、

 

↑の記事にあるように(注)、MSBuildを手書きでプロジェクトファイルを書いて利用するのはお勧めしません。素直にVisual Studio Community Editionを使われた方が良いです。(私は「まだ」使いませんが...)

注:記事から引用→「『こんなものを手で書けるのか?』と感じてもらうためである。」「MSBuildを動かすためにはプロジェクトファイルが必要だ。ただし、プロジェクトファイルの書き方は難しいので、ゼロから手書きするのはあまり現実的とは言い難い。