MSBuildMSBuild

Microsoft Build EngineMicrosoft Build Engine は、アプリケーションをビルドするためのプラットフォームです。The Microsoft Build EngineMicrosoft Build Engine is a platform for building applications. MSBuild とも呼ばれるこのエンジンには、ビルド プラットフォームでソフトウェアを処理およびビルドする方法を制御する、プロジェクト ファイル用の XML スキーマが用意されています。This engine, which is also known as MSBuild, provides an XML schema for a project file that controls how the build platform processes and builds software. Visual Studio は MSBuild を使用しますが、MSBuild は Visual Studio に依存しません。Visual Studio uses MSBuild, but it doesn't depend on Visual Studio. プロジェクト ファイルまたはソリューション ファイルに対して msbuild.exe を実行すると、Visual Studio がインストールされていない環境で、製品の統合とビルドを実行できます。By invoking msbuild.exe on your project or solution file, you can orchestrate and build products in environments where Visual Studio isn't installed.

Visual Studio は、マネージ プロジェクトの読み込みとビルドを行う MSBuild をホストしています。Visual Studio uses MSBuild to load and build managed projects. Visual Studio のプロジェクト ファイル (.csproj、vbproj、vcxproj など) には、IDE を使用してプロジェクトをビルドするときに実行される MSBuild XML コードが含まれています。The project files in Visual Studio (.csproj,.vbproj, vcxproj, and others) contain MSBuild XML code that executes when you build a project by using the IDE. Visual Studio プロジェクトには、一般的な開発作業を行う必要なすべての設定とビルド プロセスがインポートされますが、Visual Studio 内のエディターや任意の XML エディターを使用してそれらを拡張または変更することもできます。Visual Studio projects import all the necessary settings and build processes to do typical development work, but you can extend or modify them from within Visual Studio or by using an XML editor.

C++ に対する MSBuild の詳細については、「MSBuild (Visual C++)」をご覧ください。For information about MSBuild for C++, see MSBuild (Visual C++).

次の例では、Visual Studio IDE の代わりに、MSBuild コマンド ラインでビルドを実行する状況について説明します。The following examples illustrate when you might run builds by using an MSBuild command line instead of the Visual Studio IDE.

  • Visual Studio 2013 がインストールされていません。Visual Studio isn't installed.

  • MSBuild の 64 ビット バージョンを使用することを希望しています。You want to use the 64-bit version of MSBuild. 通常は MSBuild のこのバージョンは不要ですが、このバージョンを使用すると、MSBuild はより多くのメモリにアクセスできます。This version of MSBuild is usually unnecessary, but it allows MSBuild to access more memory.

  • 複数のプロセスでビルドを実行することを希望しています。You want to run a build in multiple processes. ただし、C++ および C# で記述したプロジェクトに関しては、同じ結果を達成するために IDE を使用することもできます。However, you can use the IDE to achieve the same result on projects in C++ and C#.

  • ビルド システムを変更することを希望しています。You want to modify the build system. たとえば、次の操作を有効にすることを希望する場合があります。For example, you might want to enable the following actions:

    • コンパイラに渡す前に、ファイルを前処理します。Preprocess files before they reach the compiler.

    • ビルド出力を別の場所にコピーします。Copy the build outputs to a different place.

    • ビルド出力から圧縮ファイルを作成します。Create compressed files from build outputs.

    • 後処理手順を実行します。Do a post-processing step. たとえば、1 つのアセンブリに対して、異なる複数のバージョンをスタンプとして割り当てることがあります。For example, you might want to stamp an assembly with a different version.

    Visual Studio IDE でコードを作成し、MSBuild を使用してビルドを実行することもできます。You can write code in the Visual Studio IDE but run builds by using MSBuild. 別の方法として、開発用コンピューターの IDE でコードをビルドすることもできますが、単一の MSBuild コマンド ラインを使用して、複数の開発者から取得して統合したコードをビルドすることもできます。As another alternative, you can build code in the IDE on a development computer but use an MSBuild command line to build code that's integrated from multiple developers.

注意

Team Foundation ビルドを使用して、アプリケーションのコンパイル、テスト、および配置を自動的に実行することもできます。You can use Team Foundation Build to automatically compile, test, and deploy your application. 開発者がコードをチェックインしたとき (たとえば、継続的インテグレーションの手法の一環として)、またはスケジュールに従って (たとえば、夜間のビルド確認テストの一部として)、ビルド システムがビルドを自動的に実行ですることもできます。Your build system can automatically run builds when developers check in code (for example, as part of a Continuous Integration strategy) or according to a schedule (for example, a nightly Build Verification Test build). Team Foundation ビルドは、MSBuild を使用してコードをコンパイルします。Team Foundation Build compiles your code by using MSBuild. 詳細については、「アプリケーションのビルド」をご覧ください。For more information, see Build the application.

ここでは、MSBuild の概要について説明します。This topic provides an overview of MSBuild. 入門チュートリアルについては、「チュートリアル: MSBuild の使用」をご覧ください。For an introductory tutorial, see Walkthrough: Using MSBuild.

このトピックの内容In this topic

コマンド プロンプトでの MSBuild の使用Using MSBuild at a Command Prompt

MSBuildMSBuild をコマンド プロンプトで実行するには、MSBuild.exe にプロジェクト ファイルを渡し、適切なコマンド ライン オプションを指定して実行します。To run MSBuildMSBuild at a command prompt, pass a project file to MSBuild.exe, together with the appropriate command-line options. コマンド ライン オプションでは、プロパティを設定したり、特定のターゲットを実行したりできるほか、ビルド処理を制御するその他のオプションも設定できます。Command-line options let you set properties, execute specific targets, and set other options that control the build process. たとえば、MyProj.proj プロパティを Configuration に設定してファイル Debug をビルドするには、次のコマンド ライン構文を使用します。For example, you would use the following command-line syntax to build the file MyProj.proj with the Configuration property set to Debug.

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

MSBuildMSBuild のコマンド ライン オプションの詳細については、「コマンド ライン リファレンス」をご覧ください。For more information about MSBuildMSBuild command-line options, see Command-Line Reference.

重要

プロジェクトをダウンロードする前に、コードが信頼できるものかどうかを確認してください。Before you download a project, determine the trustworthiness of the code.

プロジェクト ファイルProject File

MSBuildMSBuild では、簡単で拡張性がある XML ベースのプロジェクト ファイル形式が採用されています。 uses an XML-based project file format that's straightforward and extensible. MSBuildMSBuild のプロジェクト ファイル形式では、ビルドする項目のほか、それらを異なるオペレーティング システムや構成用にビルドする方法を開発者が指定できます。The MSBuildMSBuild project file format lets developers describe the items that are to be built, and also how they are to be built for different operating systems and configurations. また、異なるファイルに適用できるビルド規則を記述しておき、製品を構成するさまざまなプロジェクトで再利用することにより、一貫したビルド作業を行うことができます。In addition, the project file format lets developers author reusable build rules that can be factored into separate files so that builds can be performed consistently across different projects in the product.

以下のセクションでは MSBuildMSBuild プロジェクト ファイル形式のいくつかの基本要素について説明します。The following sections describe some of the basic elements of the MSBuildMSBuild project file format. 基本的なプロジェクト ファイルを作成する方法のチュートリアルについては、「チュートリアル: MSBuild プロジェクト ファイルのゼロからの作成」をご覧ください。For a tutorial about how to create a basic project file, see Walkthrough: Creating an MSBuild Project File from Scratch.

プロパティProperties

プロパティはビルドを設定するためのキーと値のペアです。Properties represent key/value pairs that can be used to configure builds. プロパティを宣言するには、そのプロパティの名前を持つ要素を PropertyGroup 要素の子として作成します。Properties are declared by creating an element that has the name of the property as a child of a PropertyGroup element. たとえば、次の コードでは、BuildDir という名前のプロパティを作成し、Build を値として設定しています。For example, the following code creates a property named BuildDir that has a value of Build.

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

要素内に Condition 属性を配置して、プロパティを条件付きで定義することもできます。You can define a property conditionally by placing a Condition attribute in the element. 条件が true と評価されないと、条件付き要素の内容は無視されます。The contents of conditional elements are ignored unless the condition evaluates to true. 次の例では、Configuration 要素がまだ定義されていない場合に、この要素を定義します。In the following example, the Configuration element is defined if it hasn't yet been defined.

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

プロジェクト ファイルでプロパティを参照するには、$(PropertyName) という構文を使用します。Properties can be referenced throughout the project file by using the syntax $(PropertyName). たとえば、前の例に示したプロパティを参照するには、$(BuildDir) および $(Configuration) と記述します。For example, you can reference the properties in the previous examples by using $(BuildDir) and $(Configuration).

プロパティの詳細については、「MSBuild プロパティ」をご覧ください。For more information about properties, see MSBuild Properties.

項目Items

項目はビルド システムへの入力であり、通常はファイルを表します。Items are inputs into the build system and typically represent files. 項目はユーザー定義の項目名に基づいて項目の種類にグループ化されます。Items are grouped into item types, based on user-defined item names. これらの項目の種類は、タスクのパラメーターとして使用できます。タスクでは、個々の項目を使用してビルド処理の各ステップを実行します。These item types can be used as parameters for tasks, which use the individual items to perform the steps of the build process.

項目は、その項目の種類名を名前に持つ要素を、ItemGroup 要素の子として作成することにより、プロジェクト ファイルで宣言します。Items are declared in the project file by creating an element that has the name of the item type as a child of an ItemGroup element. たとえば、次のコードでは、Compile という名前の項目の種類を作成し、2 つのファイルを含めています。For example, the following code creates an item type named Compile, which includes two files.

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

プロジェクト ファイルで項目の種類を参照するには、@(ItemType) という構文を使用します。Item types can be referenced throughout the project file by using the syntax @(ItemType). たとえば、この例に示した項目の種類を参照するには、@(Compile) と記述します。For example, the item type in the example would be referenced by using @(Compile).

MSBuild では、要素名および属性名では大文字と小文字が区別されますが、In MSBuild, element and attribute names are case-sensitive. プロパティ名、項目名、メタデータ名では、大文字と小文字は区別されません。However, property, item, and metadata names are not. 次の例では、CompilecomPile、または大文字小文字が異なるさらに別の項目の種類のいずれかを作成し、項目の種類に対して "one.cs;two.cs" という値を割り当てます。The following example creates the item type Compile, comPile, or any other case variation, and gives the item type the value "one.cs;two.cs".

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

項目はワイルドカード文字を使って宣言できるほか、メタデータを追加することで、より高度なビルド作業を行うことができます。Items can be declared by using wildcard characters and may contain additional metadata for more advanced build scenarios. 項目の詳細については、「項目」をご覧ください。For more information about items, see Items.

タスクTasks

タスクとは、MSBuildMSBuild プロジェクトでビルド処理を実行するために使用される一連の実行可能コードです。Tasks are units of executable code that MSBuildMSBuild projects use to perform build operations. たとえば、タスクでは入力ファイルをコンパイルしたり、外部ツールを実行したりします。For example, a task might compile input files or run an external tool. タスクは再利用が可能で、複数の開発者が複数のプロジェクトで共有できます。Tasks can be reused, and they can be shared by different developers in different projects.

タスクの実行ロジックはマネージ コードで記述され、UsingTask 要素を使用して MSBuildMSBuild にマップされます。The execution logic of a task is written in managed code and mapped to MSBuildMSBuild by using the UsingTask element. ITask インターフェイスを実装するマネージ型を記述することにより、独自のタスクを作成できます。You can write your own task by authoring a managed type that implements the ITask interface. タスクを記述する方法の詳細については、「タスクの作成」をご覧ください。For more information about how to write tasks, see Task Writing.

MSBuildMSBuild には、実際の要件に合わせて変更できる一般的なタスクが含まれています。 includes common tasks that you can modify to suit your requirements. 例は、ファイルをコピーする Copy、ディレクトリを作成する MakeDir、Visual C# ソース コード ファイルをコンパイルする Csc などです。Examples are Copy, which copies files, MakeDir, which creates directories, and Csc, which compiles Visual C# source code files. 使用可能なタスクと使用法については、「タスク リファレンス」をご覧ください。For a list of available tasks together with usage information, see Task Reference.

MSBuildMSBuild プロジェクト ファイルでタスクを実行するには、タスク名を名前に持つ要素を Target 要素の子として作成します。A task is executed in an MSBuildMSBuild project file by creating an element that has the name of the task as a child of a Target element. 一般に、タスクは、要素の属性として渡されるパラメーターを受け取ります。Tasks typically accept parameters, which are passed as attributes of the element. MSBuildMSBuild のプロパティと項目の両方をパラメーターとして使用できます。Both MSBuildMSBuild properties and items can be used as parameters. たとえば、次のコードでは、MakeDir タスクを呼び出し、先ほどの例で宣言した BuildDir プロパティの値を渡しています。For example, the following code calls the MakeDir task and passes it the value of the BuildDir property that was declared in the earlier example.

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

タスクの詳細については、「MSBuild タスク」をご覧ください。For more information about tasks, see Tasks.

ターゲットTargets

ターゲットは、タスクを特定の順序でグループ化し、プロジェクト ファイルの各セクションを、ビルド プロセスのエントリ ポイントとして公開する役割を果たします。Targets group tasks together in a particular order and expose sections of the project file as entry points into the build process. 読みやすさや拡張性を高める目的で、複数のターゲットを論理的なセクションとしてグループ化することもできます。Targets are often grouped into logical sections to increase readability and to allow for expansion. ビルド ステップを複数のターゲットに分割することにより、他のターゲットから、一部のビルド処理だけを呼び出すことができ、そのコード セクションをすべてのターゲットに逐一コピーする手間をなくすことができます。Breaking the build steps into targets lets you call one piece of the build process from other targets without copying that section of code into every target. たとえば、ビルド処理の複数のエントリ ポイントで、参照をビルドする必要がある場合、参照をビルドするターゲットを作成しておけば、必要なすべてのエントリ ポイントからそのターゲットを実行できます。For example, if several entry points into the build process require references to be built, you can create a target that builds references and then run that target from every entry point where it's required.

ターゲットは、プロジェクト ファイル内で、Target 要素を使用して宣言します。Targets are declared in the project file by using the Target element. たとえば、次のコードでは、先ほどの例で宣言した項目のリストをパラメーターに指定して Csc タスクを呼び出す、Compile という名前のターゲットを作成しています。For example, the following code creates a target named Compile, which then calls the Csc task that has the item list that was declared in the earlier example.

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

ターゲットを使用して相互の関係を定義し、依存関係の分析を実行するなど、より高度なシナリオにも対応しています。これにより、ターゲットが最新のものである場合に、ビルド処理からセクション全体をスキップするようなことが可能となります。In more advanced scenarios, targets can be used to describe relationships among one another and perform dependency analysis so that whole sections of the build process can be skipped if that target is up-to-date. ターゲットの詳細については、「MSBuild ターゲット」をご覧ください。For more information about targets, see Targets.

ビルド ログBuild Logs

コンソールまたは別の出力デバイスにビルド エラー、警告、およびメッセージを記録できます。You can log build errors, warnings, and messages to the console or another output device. 詳細については、「ビルド ログの取得」と「MSBuild でのログ」をご覧ください。For more information, see Obtaining Build Logs and Logging in MSBuild.

Visual Studio での MSBuild の使用Using MSBuild in Visual Studio

Visual StudioVisual Studio は、MSBuildMSBuild プロジェクト ファイル形式を使用して、マネージ プロジェクトに関するビルド情報を保存します。 uses the MSBuildMSBuild project file format to store build information about managed projects. Visual StudioVisual Studio インターフェイスを使用してプロジェクト設定に追加や変更が加えられると、プロジェクトごとに生成される .proj ファイルにその内容が反映されます。Project settings that are added or changed by using the Visual StudioVisual Studio interface are reflected in the .proj file that's generated for every project. Visual StudioVisual Studio は、MSBuildMSBuild のホスト インスタンスを使用して、マネージ プロジェクトをビルドします。 uses a hosted instance of MSBuildMSBuild to build managed projects. つまり、マネージ プロジェクトは、Visual StudioVisual Studio でも、コマンド プロンプトを使用しても (Visual StudioVisual Studio がインストールされていない場合でも)、同じようにビルドできます。This means that a managed project can be built in Visual StudioVisual Studio or at a command prompt (even if Visual StudioVisual Studio isn't installed), and the results will be identical.

Visual Studio で MSBuild を使用する方法のチュートリアルについては、「チュートリアル: MSBuild の使用」をご覧ください。For a tutorial about how to use MSBuild in Visual Studio, see Walkthrough: Using MSBuild.

マルチ ターゲットMultitargeting

Visual Studio を使用すると、いくつかのバージョンの .NET Framework のうち、任意のバージョンで動作するようにアプリケーションをコンパイルできます。By using Visual Studio, you can compile an application to run on any one of several versions of the .NET Framework. たとえば、あるアプリケーションを 32 ビット プラットフォーム上の .NET Framework 2.0 で動作するようにコンパイルしたり、これと同じアプリケーションを 64 ビット プラットフォーム上の .NET Framework 4.5 で動作するようにコンパイルしたりできます。For example, you can compile an application to run on the .NET Framework 2.0 on a 32-bit platform, and you can compile the same application to run on the .NET Framework 4.5 on a 64-bit platform. 複数のフレームワークに対してコンパイルする機能をマルチ ターゲットといいます。The ability to compile to more than one framework is named multitargeting.

マルチ ターゲットには、次のような利点があります。These are some of the benefits of multitargeting:

  • バージョン 2.0、3.0、3.5 などの以前のバージョンの .NET Framework を対象とするアプリケーションを開発できます。You can develop applications that target earlier versions of the .NET Framework, for example, versions 2.0, 3.0, and 3.5.

  • Silverlight など、.NET Framework 以外のフレームワークを対象にできます。You can target frameworks other than the .NET Framework, for example, Silverlight.

  • ターゲット フレームワークの定義済みのサブセットであるフレームワーク プロファイルを対象にできます。You can target a framework profile, which is a predefined subset of a target framework.

  • 現在のバージョンの .NET Framework 用サービス パックがリリースされた場合、そのバージョンを対象にできます。If a service pack for the current version of the .NET Framework is released, you could target it.

  • 複数バージョン対応により、アプリケーションが、対象となるフレームワークやプラットフォームのみで利用できる機能を使うことができます。Multitargeting guarantees that an application uses only the functionality that's available in the target framework and platform.

    詳細については、MSBuild のマルチ ターゲットに関する記事をご覧ください。For more information, see Multitargeting.

タイトルTitle 説明Description
チュートリアル: MSBuild プロジェクト ファイルのゼロからの作成Walkthrough: Creating an MSBuild Project File from Scratch テキスト エディターのみを使用して、基本的なプロジェクト ファイルをインクリメント方式で作成する方法について説明します。Shows how to create a basic project file incrementally, by using only a text editor.
チュートリアル: MSBuild の使用Walkthrough: Using MSBuild MSBuild のビルド ブロックについて説明し、Visual Studio IDE を閉じずに MSBuild プロジェクトを記述、操作、およびデバッグする方法について説明します。Introduces the building blocks of MSBuild and shows how to write, manipulate, and debug MSBuild projects without closing the Visual Studio IDE.
MSBuild の概念MSBuild Concepts MSBuild の 4 つのビルド ブロックであるプロパティ、項目、ターゲット、およびタスクについて説明します。Presents the four building blocks of MSBuild: properties, items, targets, and tasks.
項目Items MSBuildMSBuild ファイル形式の一般的な概念と、各構成要素の組み合わせ方について説明します。Describes the general concepts behind the MSBuildMSBuild file format and how the pieces fit together.
MSBuild プロパティMSBuild Properties プロパティとプロパティ コレクションについて説明します。Introduces properties and property collections. プロパティはビルドを設定するためのキーと値のペアです。Properties are key/value pairs that can be used to configure builds.
ターゲットTargets タスクを特定の順序でグループ化し、コマンド ラインからビルド処理のセクションを呼び出すことができるようにする方法について説明します。Explains how to group tasks together in a particular order and enable sections of the build process to be called on the command line.
タスクTasks 実行可能コードにおける、MSBuildMSBuild による分割不可能なビルド処理の実行単位を作成する方法について説明します。Shows how to create a unit of executable code that can be used by MSBuildMSBuild to perform atomic build operations.
条件Conditions MSBuild の要素で Condition 属性を使用する方法について説明します。Discusses how to use the Condition attribute in an MSBuild element.
詳細な概念Advanced Concepts バッチ処理、変換の実行、複数バージョン対応など、高度な利用法を紹介します。Presents batching, performing transforms, multitargeting, and other advanced techniques.
MSBuild でのログLogging in MSBuild ビルド イベント、メッセージ、およびエラーを記録する方法について説明します。Describes how to log build events, messages, and errors.
その他のリソースAdditional Resources MSBuild に関する詳細な情報を提供するコミュニティやサポートのリソースを紹介します。Lists community and support resources for more information about MSBuild.

参照Reference

MSBuild リファレンスMSBuild Reference
リファレンス情報を示すトピックへのリンクを提供します。Links to topics that contain reference information.

用語集 MSBuild の一般的な用語を定義します。Glossary Defines common MSBuild terms.