続きです。csc.exe を使って C# のソースコードがコンパイルできるようになると、C++ の make のようにたくさんのファイルを一度にコンパイルしたいですよね。
アセンブリを分けようと思って、/target と /reference /out を駆使して作ったバッチファイルは以下のものです。
csc /nologo /target:library /out:sample.datasets.dll datatable.cs csc /nologo /target:library /r:sample.datasets.dll /out:sample.dao.dll dao.cs csc /nologo /target:library /out:sample.models.dll /reference:sample.datasets.dll model.cs csc /nologo /target:library /out:sample.bizlogic.dll ^ /r:sample.models.dll /r:sample.datasets.dll /r:sample.dao.dll bizlogic.cs csc /nologo /target:library /out:sample.dll ^ /r:sample.models.dll ^ /r:sample.bizlogic.dll ^ /r:sample.datasets.dll ^ SampleForm.cs csc /nologo /target:exe ^ /r:sample.dao.dll ^ /r:sample.models.dll ^ /r:sample.bizlogic.dll ^ /r:sample.datasets.dll ^ /r:sample.dll ^ main.cs csc /nologo /target:exe ^ /r:sample.dao.dll ^ /r:sample.models.dll ^ /r:sample.bizlogic.dll ^ /r:sample.datasets.dll ^ test.cs csc /nologo /target:exe ^ /r:sample.datasets.dll ^
make.cmd って言う名前のファイルにしています。
実はコマンドラインは複数行の指定ができたんですね。知らんかった。
「^」をタイピングすると、次の行に移れます。コマンドプロンプトでもできるのですが、More の前に戻れないから編集できないし…まぁ、こんな風にバッチファイルを作るときに便利です。
さて、このファイルをアセンブリ(*.dll)と C# のソースコード(*.cs)の依存関係をつけたいなぁ、と思って、さて MSBuild でやるか、とマニュアルを見てみたのですが…
MSBuild リファレンス
http://msdn.microsoft.com/ja-jp/library/0k6kkbsd%28v=VS.80%29.aspx
.NETビルド・エンジン「MSBuild」使いこなし術
http://www.atmarkit.co.jp/fdotnet/special/msbuild01/msbuild01_01.html
結論を言えば、素の状態で MSBuild の XML ファイルを書いていくのは【無理】です。到底手軽にできるようなものではありません。Visual Studio で *.csproj とか *.sln のファイルを直接ビルドするときに使うと良いですね。
# 当時、Ant が流行っていて、NAnt ができて、make よりも高機能なことができる、ってのが売りなんですけど、make のようにコロンとタブで依存関係を作りたい場合は make のほうが適していますね。
という訳で、依存関係を使って手軽にビルドしたいときは make/nmake を使いましょう、って話でした。
宜しく