.NET TIPS ビルドの前後でカスタム処理を実行するには?(応用編)デジタルアドバンテージ 一色 政彦2005/09/23 |
|
|
「TIPS:ビルドの前後でカスタム処理を実行するには?(Visual C# .NET編)」では、Visual Studio .NET(以降、VS.NET)でプログラムを開発する場合に、そのプログラムが実際に生成・更新されるビルド・プロセスの前後で、何らかのカスタム処理を行う方法(ビルド・イベント機能を活用する方法)を紹介した。しかしこの方法には、VS.NET 2003のC#(以下、Visual C# .NET 2003)でしか利用できないという欠点がある。
それではVisual C# .NET 2002やVisual Basic .NET 2002/2003(以下では、これらすべてをまとめて「VB.NET」と表現する)で、このようなビルド・イベント機能の活用した「ビルド前後のカスタム処理の実行」は実現できないのだろうか。実は、ビルド・イベント機能はVisual C++ .NET 2002/2003にも搭載されており、これを利用することでVB.NETからも実現が可能だ。
具体的には、(VB.NETプロジェクトが含まれる)ソリューションに対してVisual C++ .NETプロジェクトを追加し、そのビルド・イベント機能を利用する。つまり、VB.NETプロジェクトをビルドする前あるいは後で、このVisual C++ .NETプロジェクトがビルドされるように指定し、そこでVisual C++ .NETプロジェクトのビルド・イベントが実行されるように設定するわけである。
その具体的な手順を以下で説明していこう。なお本稿では、開発環境としてVisual C++ .NETを含めてVS.NETがインストールされていることを前提とする。
1. ソリューションへのVisual C++ .NETプロジェクトの追加
まずはビルド・イベント機能を実行するVisual C++ .NETの新規プロジェクトをソリューションに追加しよう。ビルド・イベントには「ビルド前のイベント」と「ビルド後のイベント」の2種類があるので、ここではビルド前のイベントを実現するための「PreBuildEvent」プロジェクトと、ビルド後のイベントを実現するための「PostBuildEvent」プロジェクトの2つを新規作成してソリューションに追加しよう。
次の画面は、実際に「PreBuildEvent」という新規プロジェクトをソリューションに追加しているところである。
新規Visual C++ .NETプロジェクトの追加作業で注意してほしいのは、プロジェクトのテンプレートとして「メイクファイル・プロジェクト」を選択するところである。
本稿で解説する方法では、実際には「ユーティリティ・プロジェクト」のビルド・イベント機能を利用する(詳細後述)。しかし、そのユーティリティ・プロジェクトのプロジェクト・テンプレートは用意されていないので、ここでは一時的に(不要なファイルがあまり生成されない)「メイクファイル・プロジェクト」をプロジェクト・テンプレートとして選択している。
2. Visual C++ .NETプロジェクトがビルドされるタイミングの指定
「PreBuildEvent」プロジェクトと「PostBuildEvent」プロジェクトをソリューションへ追加し終わったら、次にそれらのプロジェクトに含まれるビルド・イベント機能が、VB.NETプロジェクトのビルド・プロセスの前後で実行されるようにしよう。具体的にはプロジェクトのビルド順序を指定する。このビルド順序の指定を行うには、それぞれのプロジェクト間に依存関係を設定すればよい。
それを実際に行っているのが次の画面だ。この画面では、VB.NETプロジェクトと、(その前にビルドされるべき)「PreBuildEvent」プロジェクト、(その後にビルドされるべき)「PostBuildEvent」プロジェクトという3つのプロジェクト間の依存関係を設定して、それぞれのプロジェクトがビルドされる順番を指定している。
Visual C++ .NETプロジェクトがビルドされるタイミングの指定 | ||||||||||||||||||
VB.NETプロジェクトと、(その前にビルドされるべき)「PreBuildEvent」プロジェクト、(その後にビルドされるべき)「PostBuildEvent」プロジェクトという3つのプロジェクト間の依存関係を設定して、それぞれのプロジェクトがビルドされる順番を指定しているところ。 | ||||||||||||||||||
|
上の画面におけるプロジェクト間の依存関係の設定では、
(1) PreBuildEventプロジェクト
(2) VB.NETプロジェクト(WindowsApplication2プロジェクト)
(3) PostBuildEventプロジェクト
の順番でプロジェクトがビルドされるように指定したことになる。
3. ビルド・イベントで実行するカスタム処理の設定
後は実際にビルド・イベント(具体的には「ビルド前のイベント」と「ビルド後のイベント」)で実行するカスタム処理を設定するだけだ。
ビルド・イベントの設定は、現在の「メイクファイル」というプロジェクト・タイプでは行うことができない。そこで(新規プロジェクトの追加のところで述べたように)、プロジェクト・タイプを「メイクファイル」から「ユーティリティ」に変更する必要がある。
プロジェクトをユーティリティ・プロジェクトに変更することで、前掲の「TIPS:ビルドの前後でカスタム処理を実行するには?(Visual C# .NET編)」と同じように、ビルド イベントとしてビルド前のイベントやビルド後のイベントのコマンドラインを設定できるようになる。
これを実際に行っているのが次の画面である。
ビルド・イベントで実行するカスタム処理の設定 | |||||||||||||||||||||
ビルド・プロセスの前後で、何らかのカスタム処理を行いたい場合には、プロジェクト・タイプをユーティリティ・プロジェクトに変更したうえで、ビルド・イベントで実行するカスタム処理(コマンドライン)を設定すればよい。 | |||||||||||||||||||||
|
4. ビルド・イベントの実行
後はソリューション全体を実際にビルドすると、VB.NETプロジェクトのビルドの前後に、カスタム処理が実行される。次の画面は、VS.NETで本稿のソリューション全体をビルドした際の出力結果の例だ。
ビルド・イベント機能の実行結果 |
この出力結果を見ると、最初のPreBuildEventプロジェクトのビルドで「ビルド前のイベント」が、最後のPostBuildEventプロジェクトのビルドで「ビルド後のイベント」が、それぞれ正しく実行されているのを確認できる。 |
この出力結果を見ると、正しくPreBuildEventプロジェクト→VB.NETプロジェクト(WindowsApplication2プロジェクト)→PostBuildEventプロジェクトの順番でビルドされたことが分かる。
さらにPreBuildEventプロジェクトのビルドでは、正しくビルド前のイベントが実行され(この画面の例では「C:\copied\copy.exe が見つかりませんでした。」というエラー・メッセージが表示されている)、PostBuildEventプロジェクトのビルドでは、正しくビルド後のイベントが実行されているのを確認できる(この画面の例では「1 個のファイルをコピーしました。」というメッセージが表示されている)。
カテゴリ:開発環境&ツール 処理対象:ビルド 関連TIPS:ビルドの前後でカスタム処理を実行するには?(Visual C# .NET編)」 |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|