このトピックの対象: ✓ .NET Core SDK 1.x .NET Core SDK 2.0This topic applies to: ✓ .NET Core SDK 1.x .NET Core SDK 2.0


dotnet build - プロジェクトとそのすべての依存関係をビルドします。dotnet build - Builds a project and all of its dependencies.


dotnet build [<PROJECT>] [-c|--configuration] [-f|--framework] [--force] [--no-dependencies] [--no-incremental]
    [--no-restore] [-o|--output] [-r|--runtime] [-v|--verbosity] [--version-suffix]
dotnet build [-h|--help]


dotnet build コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。The dotnet build command builds the project and its dependencies into a set of binaries. バイナリには、拡張子が .dll である中間言語 (IL) ファイルのプロジェクトのコードと、拡張子が .pdb でありデバッグに使われるシンボル ファイルが含まれます。The binaries include the project's code in Intermediate Language (IL) files with a .dll extension and symbol files used for debugging with a .pdb extension. アプリケーションの依存関係を一覧表示する依存関係 JSON ファイル (*.deps.json) が生成されます。A dependencies JSON file (*.deps.json) is produced that lists the dependencies of the application. 共有ランタイムと、そのアプリケーションのバージョンを指定する、*.runtimeconfig.json ファイルが生成されます。A *.runtimeconfig.json file is produced, which specifies the shared runtime and its version for the application.

サードパーティ (NuGet のライブラリなど) との依存関係があるプロジェクトの場合、NuGet キャッシュから解決され、プロジェクトのビルドの出力では使うことができません。If the project has third-party dependencies, such as libraries from NuGet, they're resolved from the NuGet cache and aren't available with the project's built output. この点を考慮すると、dotnet build の生成物は別のコンピューターに転送して実行することはできません。With that in mind, the product of dotnet build isn't ready to be transferred to another machine to run. これは .NET Framework の動作とは対照的です。 .NET Framework の場合、実行可能なプロジェクト (アプリケーション) をビルドすると、.NET Framework がインストールされている任意のコンピューター上で実行できる出力が生成されます。This is in contrast to the behavior of the .NET Framework in which building an executable project (an application) produces output that's runnable on any machine where the .NET Framework is installed. .NET Core でも同様の動作にするには、dotnet publish コマンドを使用する必要があります。To have a similar experience with .NET Core, you need to use the dotnet publish command. 詳しくは、「.NET Core アプリケーション展開」をご覧ください。For more information, see .NET Core Application Deployment.

ビルドには project.assets.json ファイルが必要です。このファイルには、アプリケーションの依存関係が一覧表示されています。Building requires the project.assets.json file, which lists the dependencies of your application. このファイルは、dotnet restore を実行すると作成されます。The file is created when dotnet restore is executed. アセット ファイルがないと、ツールは参照アセンブリを解決できないため、エラーになります。Without the assets file in place, the tooling cannot resolve reference assemblies, which results in errors. .NET Core 1.x SDK の場合、dotnet build を実行する前に dotnet restore を明示的に実行する必要がありました。With .NET Core 1.x SDK, you needed to explicitly run the dotnet restore before running dotnet build. .NET Core 2.0 SDK 以降では、dotnet build を実行すると、dotnet restore が暗黙的に実行されます。Starting with .NET Core 2.0 SDK, dotnet restore runs implicitly when you run dotnet build. ビルド コマンドの実行時に暗黙的な復元を無効にする場合は、--no-restore オプションを渡します。If you want to disable implicit restore when running the build command, you can pass the --no-restore option.


.NET Core 2.0 以降、dotnet restore を実行する必要がなくなりました。dotnet builddotnet run のような、復元を必要とするあらゆるコマンドによって暗黙的に実行されるためです。Starting with .NET Core 2.0, you don't have to run dotnet restore because it's run implicitly by all commands, such as dotnet build and dotnet run, that require a restore to occur. Visual Studio Team Services の継続的インテグレーション ビルドなど、明示的な復元が合理的となる一部のシナリオや、復元の時刻を明示的に制御する必要があるビルド システムでは、引き続き有効なコマンドとなります。It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Visual Studio Team Services or in build systems that need to explicitly control the time at which the restore occurs.

このコマンドには dotnet restore オプションを指定できますが、--source のように長い形式で指定する必要があります。This command also supports the dotnet restore options when passed in the long form (for example, --source). -s のような短い形式のオプションはサポートされていません。Short form options, such as -s, are not supported.

dotnet build では MSBuild を使用してプロジェクトをビルドするため、並列ビルドとインクリメンタル ビルドの両方がサポートされます。dotnet build uses MSBuild to build the project, so it supports both parallel and incremental builds. 詳しくは、「インクリメンタル ビルド」を参照してください。For more information, see Incremental Builds.

このオプションに加え、dotnet build コマンドは、プロパティを設定する /p やロガーを定義する /l などの MSBuild オプションも受け入れます。In addition to its options, the dotnet build command accepts MSBuild options, such as /p for setting properties or /l to define a logger. これらのオプションの詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。For more information about these options, see the MSBuild Command-Line Reference.

プロジェクトを実行できるかどうかは、プロジェクト ファイルの <OutputType> プロパティで決まります。Whether the project is executable or not is determined by the <OutputType> property in the project file. 次の例は、実行可能なコードを生成するプロジェクトを示しています。The following example shows a project that produces executable code:


ライブラリを生成するには、<OutputType> プロパティを省略してください。In order to produce a library, omit the <OutputType> property. ビルドされる出力の主な違いは、ライブラリの IL DLL にはエントリ ポイントが含まれず、実行できないことです。The main difference in built output is that the IL DLL for a library doesn't contain entry points and can't be executed.



ビルドするプロジェクト ファイル。The project file to build. プロジェクト ファイルを指定しない場合、MSBuild は、現在の作業ディレクトリから proj で終わるファイル名拡張子を検索し、そのファイルを使います。If a project file is not specified, MSBuild searches the current working directory for a file that has a file extension that ends in proj and uses that file.


-c|--configuration {Debug|Release}

ビルド構成を定義します。Defines the build configuration. 既定値は Debug です。The default value is Debug.

-f|--framework <FRAMEWORK>

特定のフレームワーク用にコンパイルします。Compiles for a specific framework. フレームワークは、プロジェクト ファイルで定義する必要があります。The framework must be defined in the project file.


最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。Forces all dependencies to be resolved even if the last restore was successful. このフラグを指定することは、project.assets.json ファイルを削除することと同じです。Specifying this flag is the same as deleting the project.assets.json file.


コマンドの短いヘルプを印刷します。Prints out a short help for the command.


プロジェクト間 (P2P) 参照を無視し、指定されたルート プロジェクトのみをビルドします。Ignores project-to-project (P2P) references and only builds the specified root project.


インクリメンタル ビルドとして安全でないビルドをマークします。Marks the build as unsafe for incremental build. このフラグにより、インクリメンタル コンパイルは無効になり、プロジェクトの依存関係グラフのクリーン再ビルドが強制的に行われます。This flag turns off incremental compilation and forces a clean rebuild of the project's dependency graph.


ビルド時に暗黙的な復元は実行されません。Doesn't execute an implicit restore during build.

-o|--output <OUTPUT_DIRECTORY>

ビルド済みバイナリを配置するディレクトリ。Directory in which to place the built binaries. このオプションを指定する場合は、--framework を定義する必要もあります。You also need to define --framework when you specify this option.


ターゲットのランタイムを指定します。Specifies the target runtime. ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。For a list of Runtime Identifiers (RIDs), see the RID catalog.

-v|--verbosity <LEVEL>

コマンドの詳細レベルを設定します。Sets the verbosity level of the command. 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic].

--version-suffix <VERSION_SUFFIX>

プロジェクト ファイルのバージョン フィールドでアスタリスク (*) のバージョン サフィックスを定義します。Defines the version suffix for an asterisk (*) in the version field of the project file. 形式は NuGet のバージョン ガイドラインに従います。The format follows NuGet's version guidelines.


プロジェクトとその依存関係をビルドします。Build a project and its dependencies:

dotnet build

リリース構成を使用して、プロジェクトとその依存関係をビルドします。Build a project and its dependencies using Release configuration:

dotnet build --configuration Release

特定のランタイム (この例では、Ubuntu 16.04) 用にプロジェクトとその依存関係をビルドします。Build a project and its dependencies for a specific runtime (in this example, Ubuntu 16.04):

dotnet build --runtime ubuntu.16.04-x64

プロジェクトをビルドし、復元操作中に指定された NuGet パッケージ ソースを使用します (.NET Core SDK 2.0 以降のバージョン)。Build the project and use the specified NuGet package source during the restore operation (.NET Core SDK 2.0 and later versions):

dotnet build --source c:\packages\mypackages