Visual Studioのプロジェクトファイル(.vcxproj, .csproj, .vbproj, ……)はMSBuildコマンドで取り扱える形式です。ご存じの方も多いでしょう。手で書いたMSBuildプロジェクトをVisual Studioでプロジェクトとして認識させることは可能なのかという疑問がわきました。そして、答えに辿り着きました。
- 拡張子が.vcxproj, .csproj, .vbprojなど、Visual Studioが認識するものであるなら、なんでも良い。
- Build, Rebuild, Cleanという名前のターゲットがあれば、Visual Studioのメニューから呼び出せる。
MSBuildプロジェクトファイルを書く
チュートリアル: MSBuild の使用を元に、Hello worldを出力するプロジェクトファイルを作ります。
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Build"> <Message Importance="High" Text="Hello World"/> </Target> </Project> |
そして、これを”hello.csproj”という名前で保存します。もちろん、.vcxprojや.vbprojでも構いません。
Visual Studioソリューションに追加する
Visual Studioを起動し、空のソリューションを作ります。Visual Studioのバージョンによって多少異なりますが、プロジェクトの新規作成のウィザードにおいて、Visual Basic/Visual C#/Visual C++などが並んでいる中の「その他のプロジェクトの種類」の中に「空のソリューション」があるはずです。
そうしたら、プロジェクトの追加を行います。たとえば、ソリューションエクスプローラーで今作ったソリューションを右クリックし、「追加」→「既存のプロジェクト」を押し、先ほど保存したhello.csprojを選びます。
ビルド
準備ができました。「ソリューションのビルド」を行います。すると、出力ウィンドウにMessageタスクで指定したテキストが出ます。
1>------ ビルド開始: プロジェクト:hello, 構成:Debug x86 ------ 1> Hello World ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
なお、リビルドやクリーンを実行すると、このようになります。
1>------ すべてのリビルド開始: プロジェクト:hello, 構成:Debug x86 ------ 1>D:\……\Solution1\hello.csproj : error MSB4057: ターゲット "Rebuild" はプロジェクト内に存在しません。 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========
もちろん、実際にRebuildやCleanなどのターゲットを定義すれば使用できるようになります。
このままだと参照設定などがうまくいかないなど、通常のVisual Studioプロジェクトよりは使い勝手が劣る点もあります。実際に使う際には注意してください。
Visual Studioのプロジェクトの新規作成で作ったプロジェクトから少しずつ内容を削ってビルドしての繰り返しで、冒頭の結論に辿り着きました。
これが実用的かどうかはともかく、手書きでプロジェクトファイルは作れるものなんだということを知っておくのはいいことだと思います。知っておけば、Visual Studioのプロジェクトファイルも、何かあったら気兼ねなくテキストファイルでいじって大丈夫だという自信が持てると思います。
スポンサード リンク |
この記事のカテゴリ
- MSBuild ⇒ 手書きMSBuildプロジェクトをVisual Studioでビルドする