Visual Studio 2017 を使用することをお勧めします

MSBuild1

 

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

Microsoft Build Engine は、アプリケーションをビルドするためのプラットフォームです。 これは、MSBuild でとも呼ばれる、このエンジンは、ビルド プラットフォームの処理方法およびソフトウェアを構築する方法を制御するプロジェクト ファイルの XML スキーマを提供します。 Visual Studio は MSBuild を使用しますが、MSBuild は Visual Studio に依存しません。 プロジェクト ファイルまたはソリューション ファイルに対して msbuild.exe を実行すると、Visual Studio がインストールされていない環境で、製品の統合とビルドを実行できます。

Visual Studio は、マネージ プロジェクトの読み込みとビルドを行う MSBuild をホストしています。 Visual Studio のプロジェクト ファイル (.csproj、vbproj、vcxproj など) には、IDE を使用してプロジェクトをビルドするときに実行される MSBuild XML コードが含まれています。 Visual Studio プロジェクトには、一般的な開発作業を行う必要なすべての設定とビルド プロセスがインポートされますが、Visual Studio 内のエディターや任意の XML エディターを使用してそれらを拡張または変更することもできます。

C++ の MSBuild の概要については、次を参照してください。 MSBuild (Visual c)します。

次の例では、Visual Studio IDE の代わりに、MSBuild コマンド ラインでビルドを実行する状況について説明します。

  • Visual Studio 2013 がインストールされていません。

  • MSBuild の 64 ビット バージョンを使用することを希望しています。 通常は MSBuild のこのバージョンは不要ですが、このバージョンを使用すると、MSBuild はより多くのメモリにアクセスできます。

  • 複数のプロセスでビルドを実行することを希望しています。 ただし、C++ および C# で記述したプロジェクトに関しては、同じ結果を達成するために IDE を使用することもできます。

  • ビルド システムを変更することを希望しています。 たとえば、次の操作を有効にすることを希望する場合があります。

    • コンパイラに渡す前に、ファイルを前処理します。

    • ビルド出力を別の場所にコピーします。

    • ビルド出力から圧縮ファイルを作成します。

    • 後処理手順を実行します。 たとえば、1 つのアセンブリに対して、異なる複数のバージョンをスタンプとして割り当てることがあります。

Visual Studio IDE でコードを作成し、MSBuild を使用してビルドを実行することもできます。 別の方法として、開発用コンピューターの IDE でコードをビルドすることもできますが、単一の MSBuild コマンド ラインを使用して、複数の開発者から取得して統合したコードをビルドすることもできます。

System_CAPS_ICON_note.jpg メモ

Team Foundation ビルドを使用して、アプリケーションのコンパイル、テスト、および配置を自動的に実行することもできます。 開発者がコードをチェックインしたとき (たとえば、継続的インテグレーションの手法の一環として)、またはスケジュールに従って (たとえば、夜間のビルド確認テストの一部として)、ビルド システムがビルドを自動的に実行ですることもできます。 Team Foundation ビルドは、MSBuild を使用してコードをコンパイルします。 詳細については、次を参照してください。 アプリケーションをビルドします。

ここでは、MSBuild の概要について説明します。 入門チュートリアルでは、次を参照してください。 チュートリアル: MSBuild を使用してします。

このトピックの内容

実行する MSBuild コマンド プロンプトで、プロジェクト ファイルに渡す MSBuild.exe、適切なコマンド ライン オプションです。 コマンド ライン オプションでは、プロパティを設定したり、特定のターゲットを実行したりできるほか、ビルド処理を制御するその他のオプションも設定できます。 たとえば、MyProj.proj プロパティを Configuration に設定してファイル Debug をビルドするには、次のコマンド ライン構文を使用します。

MSBuild.exe MyProj.proj /property:Configuration=Debug  

詳細については MSBuild コマンド ライン オプションを参照してください コマンド ライン リファレンスします。

System_CAPS_ICON_important.jpg 重要

プロジェクトをダウンロードする前に、コードが信頼できるものかどうかを確認してください。

MSBuild 簡単で拡張性のある XML ベースのプロジェクト ファイル形式を使用します。 MSBuild プロジェクト ファイル形式により、開発者はビルドする項目を記述し、別のオペレーティング システムと構成用にビルドするのには、どのようにもします。 また、異なるファイルに適用できるビルド規則を記述しておき、製品を構成するさまざまなプロジェクトで再利用することにより、一貫したビルド作業を行うことができます。

以下のセクションでは MSBuild プロジェクト ファイル形式のいくつかの基本要素について説明します。 基本的なプロジェクト ファイルを作成する方法の詳細については、次を参照してください。 チュートリアル: MSBuild プロジェクト ファイルを最初から作成するです。

プロパティ

プロパティはビルドを設定するためのキーと値のペアです。 プロパティが宣言の子として、プロパティの名前を持つ要素を作成することで、 PropertyGroup 要素。 たとえば、次の コードでは、BuildDir という名前のプロパティを作成し、Build を値として設定しています。

<PropertyGroup>  
    <BuildDir>Build</BuildDir>  
</PropertyGroup>  

要素内に Condition 属性を配置して、プロパティを条件付きで定義することもできます。 条件が true と評価されないと、条件付き要素の内容は無視されます。 次の例では、Configuration 要素がまだ定義されていない場合に、この要素を定義します。

<Configuration  Condition=" '$(Configuration)' == '' ">Debug</Configuration>  

プロパティは、構文 $ を使用して、プロジェクト ファイルで参照することができます (PropertyName)。 たとえば、前の例に示したプロパティを参照するには、$(BuildDir) および $(Configuration) と記述します。

プロパティの詳細については、次を参照してください。 MSBuild プロパティします。

項目

項目はビルド システムへの入力であり、通常はファイルを表します。 項目はユーザー定義の項目名に基づいて項目の種類にグループ化されます。 これらの項目の種類は、タスクのパラメーターとして使用できます。タスクでは、個々の項目を使用してビルド処理の各ステップを実行します。

子と項目の種類の名前を持つ要素を作成することで項目がプロジェクト ファイルで宣言されている、 ItemGroup 要素。 たとえば、次のコードでは、Compile という名前の項目の種類を作成し、2 つのファイルを含めています。

<ItemGroup>  
    <Compile Include = "file1.cs"/>  
    <Compile Include = "file2.cs"/>  
</ItemGroup>  

項目の種類を参照するプロジェクト ファイルの構文を使用して @(ItemType)。 たとえば、この例に示した項目の種類を参照するには、@(Compile) と記述します。

MSBuild では、要素名および属性名では大文字と小文字が区別されますが、 プロパティ名、項目名、メタデータ名では、大文字と小文字は区別されません。 次の例では、CompilecomPile、または大文字小文字が異なるさらに別の項目の種類のいずれかを作成し、項目の種類に対して "one.cs;two.cs" という値を割り当てます。

<ItemGroup>  
  <Compile Include="one.cs" />  
  <comPile Include="two.cs" />  
</ItemGroup>  

項目はワイルドカード文字を使って宣言できるほか、メタデータを追加することで、より高度なビルド作業を行うことができます。 項目に関する詳細については、次を参照してください。 項目します。

タスク

タスクとは、MSBuild プロジェクトでビルド処理を実行するために使用される一連の実行可能コードです。 たとえば、タスクでは入力ファイルをコンパイルしたり、外部ツールを実行したりします。 タスクは再利用が可能で、複数の開発者が複数のプロジェクトで共有できます。

タスクの実行ロジックはマネージ コードで記述されにマップされている MSBuild を使用して、 UsingTask 要素。 実装するマネージ型を作成して、独自のタスクを記述することができます、 ITask インターフェイスです。 タスクを記述する方法の詳細については、次を参照してください。 タスクの作成します。

MSBuild 要件に合わせて変更できる一般的なタスクが含まれます。 例としては、 コピー, 、ファイルをコピー MakeDir, 、ディレクトリを作成し、 Csc, 、Visual c# ソース コード ファイルをコンパイルします。 使用法について利用可能なタスクの一覧は、次を参照してください。 タスク リファレンスします。

タスクが実行する、 MSBuild の子としてタスクの名前を持つ要素を作成することで、プロジェクト ファイル、 ターゲット 要素。 一般に、タスクは、要素の属性として渡されるパラメーターを受け取ります。 MSBuild のプロパティと項目の両方をパラメーターとして使用できます。 たとえば、次のコードの呼び出し、 MakeDir タスクし、の値を渡す、 BuildDir 先ほどの例で宣言されたプロパティ。

<Target Name="MakeBuildDirectory">  
    <MakeDir  Directories="$(BuildDir)" />  
</Target>  

タスクの詳細については、次を参照してください。 タスクします。

ターゲット

ターゲットは、タスクを特定の順序でグループ化し、プロジェクト ファイルの各セクションを、ビルド プロセスのエントリ ポイントとして公開する役割を果たします。 読みやすさや拡張性を高める目的で、複数のターゲットを論理的なセクションとしてグループ化することもできます。 ビルド ステップを複数のターゲットに分割することにより、他のターゲットから、一部のビルド処理だけを呼び出すことができ、そのコード セクションをすべてのターゲットに逐一コピーする手間をなくすことができます。 たとえば、ビルド処理の複数のエントリ ポイントで、参照をビルドする必要がある場合、参照をビルドするターゲットを作成しておけば、必要なすべてのエントリ ポイントからそのターゲットを実行できます。

使用してターゲットがプロジェクト ファイルで宣言されている、 ターゲット 要素。 たとえば、次のコードはという名前のターゲットを作成 Compile, 、呼び出す、 Csc 先ほどの例で宣言された項目のリストを持つタスクです。

<Target Name="Compile">  
    <Csc Sources="@(Compile)" />  
</Target>  

ターゲットを使用して相互の関係を定義し、依存関係の分析を実行するなど、より高度なシナリオにも対応しています。これにより、ターゲットが最新のものである場合に、ビルド処理からセクション全体をスキップするようなことが可能となります。 ターゲットの詳細については、次を参照してください。 ターゲットします。

コンソールまたは別の出力デバイスにビルド エラー、警告、およびメッセージを記録できます。 詳細については、次を参照してください。 ビルド ログの取得MSBuild でのログします。

Visual Studio は、MSBuild プロジェクト ファイル形式を使用して、マネージ プロジェクトに関するビルド情報を保存します。 プロジェクトが追加または変更を使用している設定、 Visual Studio にインターフェイスが反映されます、。 * すべてのプロジェクトに対して生成される .*proj ファイルです。 Visual Studio は、MSBuild のホスト インスタンスを使用して、マネージ プロジェクトをビルドします。 これは、マネージ プロジェクトでビルドできることを意味 Visual Studio またはコマンド プロンプトで (たとえ Visual Studio がインストールされていない)、し、結果は同じになります。

Visual Studio で MSBuild を使用する方法の詳細については、次を参照してください。 チュートリアル: MSBuild を使用してします。

Visual Studio を使用すると、いくつかのバージョンの .NET Framework のうち、任意のバージョンで動作するようにアプリケーションをコンパイルできます。 たとえば、あるアプリケーションを 32 ビット プラットフォーム上の .NET Framework 2.0 で動作するようにコンパイルしたり、これと同じアプリケーションを 64 ビット プラットフォーム上の .NET Framework 4.5 で動作するようにコンパイルしたりできます。 複数のフレームワークに対してコンパイルする機能をマルチ ターゲットといいます。

マルチ ターゲットには、次のような利点があります。

  • バージョン 2.0、3.0、3.5 などの以前のバージョンの .NET Framework を対象とするアプリケーションを開発できます。

  • Silverlight など、.NET Framework 以外のフレームワークを対象にできます。

  • 対象にすることができます、 フレームワーク プロファイル, 、ターゲット フレームワークの定義済みのサブセットであります。

  • 現在のバージョンの .NET Framework 用サービス パックがリリースされた場合、そのバージョンを対象にできます。

  • 複数バージョン対応により、アプリケーションが、対象となるフレームワークやプラットフォームのみで利用できる機能を使うことができます。

詳細については、次を参照してください。 マルチ ターゲットします。

タイトル説明
チュートリアル: MSBuild プロジェクト ファイルを最初から作成します。テキスト エディターのみを使用して、基本的なプロジェクト ファイルをインクリメント方式で作成する方法について説明します。
チュートリアル: MSBuild の使用MSBuild のビルド ブロックについて説明し、Visual Studio IDE を閉じずに MSBuild プロジェクトを記述、操作、およびデバッグする方法について説明します。
MSBuild の概念MSBuild の 4 つのビルド ブロックであるプロパティ、項目、ターゲット、およびタスクについて説明します。
項目MSBuild ファイル形式の一般的な概念と、各構成要素の組み合わせ方について説明します。
MSBuild プロパティプロパティとプロパティ コレクションについて説明します。 プロパティはビルドを設定するためのキーと値のペアです。
ターゲットタスクを特定の順序でグループ化し、コマンド ラインからビルド処理のセクションを呼び出すことができるようにする方法について説明します。
タスク実行可能コードにおける、MSBuild による分割不可能なビルド処理の実行単位を作成する方法について説明します。
条件MSBuild の要素で Condition 属性を使用する方法について説明します。
高度な概念バッチ処理、変換の実行、複数バージョン対応など、高度な利用法を紹介します。
MSBuild でのログビルド イベント、メッセージ、およびエラーを記録する方法について説明します。
その他のリソースMSBuild に関する詳細な情報を提供するコミュニティやサポートのリソースを紹介します。

MSBuild リファレンス
リファレンス情報を示すトピックへのリンクを提供します。

用語集
MSBuild で共通に使用される用語を定義します。

表示: