dotnet builddotnet build

この記事の対象: ✔️ .NET Core 2.x SDK 以降のバージョンThis article applies to: ✔️ .NET Core 2.x SDK and later versions

名前Name

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

構文Synopsis

dotnet build [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive] [--no-dependencies]
    [--no-incremental] [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet build -h|--help

説明Description

dotnet build コマンドは、プロジェクトとその依存関係をバイナリ セットにビルドします。The dotnet build command builds the project and its dependencies into a set of binaries. バイナリには、拡張子が .dll である中間言語 (IL) ファイルのプロジェクトのコードが含まれます。The binaries include the project's code in Intermediate Language (IL) files with a .dll extension. プロジェクトの種類と設定に応じて、次などのファイルを含めることもできます。Depending on the project type and settings, other files may be included, such as:

  • プロジェクトの種類が .NET Core 3.0 以降を対象とする実行可能ファイルである場合、アプリケーションの実行に使用できる実行可能ファイル。An executable that can be used to run the application, if the project type is an executable targeting .NET Core 3.0 or later.
  • 拡張子が .pdb であるデバッグに使用されるシンボル ファイル。Symbol files used for debugging with a .pdb extension.
  • アプリケーションまたはライブラリの依存関係が列挙されている .deps.json ファイル。A .deps.json file, which lists the dependencies of the application or library.
  • アプリケーションの共有ランタイムとそのバージョンを指定する、 .runtimeconfig.json ファイル。A .runtimeconfig.json file, which specifies the shared runtime and its version for an application.
  • (プロジェクト参照または NuGet パッケージの参照を介して) プロジェクトが依存する他のライブラリ。Other libraries that the project depends on (via project references or NuGet package references).

.NET Core 3.0 より前のバージョンを対象とする実行可能なプロジェクトでは、NuGet からのライブラリの依存関係は、通常出力フォルダーにコピーされません。For executable projects targeting versions earlier than .NET Core 3.0, library dependencies from NuGet are typically NOT copied to the output folder. これらは、実行時に NuGet グローバル パッケージ フォルダーで解決されます。They're resolved from the NuGet global packages folder at run time. この点を考慮すると、dotnet build の生成物は別のコンピューターに転送して実行することはできません。With that in mind, the product of dotnet build isn't ready to be transferred to another machine to run. 展開できるアプリケーションのバージョンを作成するには、(たとえば、dotnet publish コマンドを使用して) アプリケーションを発行する必要があります。To create a version of the application that can be deployed, you need to publish it (for example, with the dotnet publish command). 詳しくは、「.NET Core アプリケーション展開」をご覧ください。For more information, see .NET Core Application Deployment.

.NET Core 3.0 以降を対象とする実行可能なプロジェクトでは、ライブラリの依存関係は出力フォルダーにコピーされます。For executable projects targeting .NET Core 3.0 and later, library dependencies are copied to the output folder. つまり、(Web プロジェクトなどが持つ) 発行専用のロジックが他にない場合、ビルドの出力は展開できるはずです。This means that if there isn't any other publish-specific logic (such as Web projects have), the build output should be deployable.

暗黙的な復元Implicit restore

ビルドには 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 can't resolve reference assemblies, which results in errors.

dotnet restore を実行する必要がなくなりました。復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet pack など) によって暗黙的に実行されるためです。You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. 暗黙的な復元を無効にするには、--no-restore オプションを使用します。To disable implicit restore, use the --no-restore option.

Azure DevOps Services の継続的インテグレーション ビルドなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。For information about how to manage NuGet feeds, see the dotnet restore documentation.

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

実行可能ファイルまたはライブラリ出力Executable or library output

プロジェクトを実行できるかどうかは、プロジェクト ファイルの <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:

<PropertyGroup>
  <OutputType>Exe</OutputType>
</PropertyGroup>

ライブラリを生成するには、<OutputType> プロパティを省略するか、その値を Library に変更します。To produce a library, omit the <OutputType> property or change its value to Library. ライブラリの IL DLL にはエントリ ポイントが含まれず、実行できません。The IL DLL for a library doesn't contain entry points and can't be executed.

MSBuildMSBuild

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. また、dotnet msbuild コマンドを使用することもできます。Or you can also use the dotnet msbuild command.

dotnet build を実行することは、dotnet msbuild -restore を実行することと同じです。ただし、出力の既定の詳細度は異なります。Running dotnet build is equivalent to running dotnet msbuild -restore; however, the default verbosity of the output is different.

引数Arguments

PROJECT | SOLUTION

ビルドするプロジェクトまたはソリューションのファイル。The project or solution file to build. プロジェクトまたはソリューションのファイルを指定しない場合、MSBuild は、現在の作業ディレクトリから proj または sln のどちらかで終わるファイル拡張子を持つファイルを検索して、そのファイルを使います。If a project or solution file isn't specified, MSBuild searches the current working directory for a file that has a file extension that ends in either proj or sln and uses that file.

オプションOptions

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。Defines the build configuration. ほとんどのプロジェクトの既定値は Debug ですが、プロジェクトでビルド構成設定をオーバーライドできます。The default for most projects is Debug, but you can override the build configuration settings in your project.

  • -f|--framework <FRAMEWORK>

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

  • --force

    最後の復元が成功した場合でも、すべての依存関係が強制的に解決されます。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.

  • -h|--help

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

  • --interactive

    コマンドを停止して、ユーザーの入力または操作のために待機させることができます。Allows the command to stop and wait for user input or action. たとえば、認証を完了する場合があります。For example, to complete authentication. .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • --no-dependencies

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

  • --no-incremental

    インクリメンタル ビルドとして安全でないビルドをマークします。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.

  • --no-restore

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

  • --nologo

    著作権情報を表示しません。Doesn't display the startup banner or the copyright message. .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • -o|--output <OUTPUT_DIRECTORY>

    ビルド済みバイナリを配置するディレクトリ。Directory in which to place the built binaries. 指定しない場合、既定のパスは ./bin/<configuration>/<framework>/ になります。If not specified, the default path is ./bin/<configuration>/<framework>/. (TargetFrameworks プロパティを使用した) ターゲット フレームワークが複数あるプロジェクトの場合は、このオプションを指定するときに --framework も定義する必要があります。For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option.

  • -r|--runtime <RUNTIME_IDENTIFIER>

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

  • -v|--verbosity <LEVEL>

    MSBuild の詳細レベルを設定します。Sets the MSBuild verbosity level. 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. 既定値は、minimal です。The default is minimal.

  • --version-suffix <VERSION_SUFFIX>

    プロジェクトをビルドするときに使用する $(VersionSuffix) プロパティの値を設定します。Sets the value of the $(VersionSuffix) property to use when building the project. これは、$(Version) プロパティが設定されていない場合にのみ機能します。This only works if the $(Version) property isn't set. 次に、$(Version) には、ダッシュで区切り $(VersionSuffix) と組み合わせた $(VersionPrefix) が設定されます。Then, $(Version) is set to the $(VersionPrefix) combined with the $(VersionSuffix), separated by a dash.

使用例Examples

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

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

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

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

    dotnet build --source c:\packages\mypackages
    
  • -p MSBuild オプションを使用してプロジェクトをビルドし、バージョン 1.2.3.4 をビルド パラメーターとして設定します。Build the project and set version 1.2.3.4 as a build parameter using the -p MSBuild option:

    dotnet build -p:Version=1.2.3.4