コマンドラインで C# をコンパイルしよう(2)

続きです。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 を使いましょう、って話でした。

カテゴリー: 開発 パーマリンク

コマンドラインで C# をコンパイルしよう(2) への1件のコメント

  1. 田崎 のコメント:

    宜しく

コメントは停止中です。