dotnet publishdotnet publish

この記事の対象: ✓ .NET Core 1.x SDK .NET Core 2.x SDKThis article applies to: ✓ .NET Core 1.x SDK .NET Core 2.x SDK


dotnet publish - ホスティング システムへの展開のため、アプリケーションとその依存関係をフォルダーにパックします。dotnet publish - Packs the application and its dependencies into a folder for deployment to a hosting system.


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


dotnet publish はアプリケーションをコンパイルし、プロジェクト ファイルに指定されたその依存関係を読み取り、結果のファイル セットをディレクトリに発行します。dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. 出力には次のアセットが含まれます。The output includes the following assets:

  • アセンブリの中間言語 (IL) コード (dll 拡張子)。Intermediate Language (IL) code in an assembly with a dll extension.
  • .deps.json ファイル。プロジェクトのすべての依存関係が含まれます。.deps.json file that includes all of the dependencies of the project.
  • .runtimeconfig.json ファイル。アプリケーションが想定する共有ランタイムと、ランタイム用の他の構成オプション (ガベージ コレクションの種類など) を指定します。.runtimeconfig.json file that specifies the shared runtime that the application expects, as well as other configuration options for the runtime (for example, garbage collection type).
  • アプリケーションの依存関係。NuGet キャッシュから出力フォルダーにコピーされます。The application's dependencies, which are copied from the NuGet cache into the output folder.

dotnet publish コマンドの出力は、実行のためにホスト システム (サーバー、PC、Mac、ラップトップなど) にすぐに展開できます。The dotnet publish command's output is ready for deployment to a hosting system (for example, a server, PC, Mac, laptop) for execution. これは、アプリケーションの展開を準備するための正式にサポートされている唯一の方法です。It's the only officially supported way to prepare the application for deployment. プロジェクトに指定されている展開の種類によっては、ホスティング システムに .NET Core 共有ランタイムがインストールされている場合とされていない場合があります。Depending on the type of deployment that the project specifies, the hosting system may or may not have the .NET Core shared runtime installed on it. 詳しくは、「.NET Core アプリケーション展開」をご覧ください。For more information, see .NET Core Application Deployment. 発行されるアプリケーションのディレクトリ構造については、「Directory structure」 (ディレクトリ構造) をご覧ください。For the directory structure of a published application, see Directory structure.


.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 that require a restore to occur, such as dotnet build and dotnet run. Azure DevOps Services の継続的インテグレーション ビルドなど、明示的な復元が合理的となる一部のシナリオや、復元の時刻を明示的に制御する必要があるビルド システムでは、引き続き有効なコマンドとなります。It's still a valid command in certain scenarios where doing an explicit restore makes sense, such as continuous integration builds in Azure DevOps 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.



発行するプロジェクト。The project to publish. これは、C#、F#、または Visual Basic のプロジェクト ファイルのパスおよびファイル名か、C#、F#、または Visual Basic のプロジェクト ファイルを含むディレクトリへのパスです。It's either the path and filename of a C#, F#, or Visual Basic project file, or the path to a directory that contains a C#, F#, or Visual Basic project file. 指定しない場合は、既定で現在のディレクトリに設定されます。If not specified, it defaults to the current directory.


-c|--configuration {Debug|Release}

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

-f|--framework <FRAMEWORK>

指定したターゲット フレームワークのアプリケーションを発行します。Publishes the application for the specified target framework. ターゲット フレームワークはプロジェクト ファイルで指定する必要があります。You must specify the target framework 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.


アプリによって公開された一連のパッケージをトリミングするために使用するターゲット マニフェストを 1 つまたは複数指定します。Specifies one or several target manifests to use to trim the set of packages published with the app. マニフェスト ファイルは、dotnet store コマンドの出力の一部です。The manifest file is part of the output of the dotnet store command. 複数のマニフェストを指定するには、マニフェストごとに --manifest を追加します。To specify multiple manifests, add a --manifest option for each manifest. このオプションは、.NET Core 2.0 SDK 以降で使用できます。This option is available starting with .NET Core 2.0 SDK.


発行の前にプロジェクトをビルドしません。Doesn't build the project before publishing. また、--no-restore フラグが暗黙的に設定されます。It also implicitly sets the --no-restore flag.


プロジェクト間参照を無視し、ルート プロジェクトのみを復元します。Ignores project-to-project references and only restores the root project.


コマンドを実行するときに、暗黙的な復元を実行しません。Doesn't execute an implicit restore when running the command.

-o|--output <OUTPUT_DIRECTORY>

出力ディレクトリのパスを指定します。Specifies the path for the output directory. 指定しないと、既定で、フレームワークに依存する展開の場合は ./bin/[configuration]/[framework]/publish/ に、自己完結型の展開の場合は ./bin/[configuration]/[framework]/[runtime]/publish/ に設定されます。If not specified, it defaults to ./bin/[configuration]/[framework]/publish/ for a framework-dependent deployment or ./bin/[configuration]/[framework]/[runtime]/publish/ for a self-contained deployment. パスが相対的である場合、生成された出力ディレクトリは、現在の作業ディレクトリではなく、プロジェクト ファイルの場所に相対的なパスとなります。If the path is relative, the output directory generated is relative to the project file location, not to the current working directory.


アプリケーションと一緒に .NET Core ランタイムを発行します。これにより、ランタイムをターゲット コンピューターにインストールする必要がなくなります。Publishes the .NET Core runtime with your application so the runtime doesn't need to be installed on the target machine. ランタイム識別子を指定した場合、その既定値は true となります。If a runtime identifier is specified, its default value is true. さまざまな展開方法の詳細については、「.NET Core アプリケーションの展開」を参照してください。For more information about the different deployment types, see .NET Core application deployment.


指定されたランタイムのアプリケーションを発行します。Publishes the application for a given runtime. これは、自己完結型の展開 (SCD) を作成するときに使われます。This is used when creating a self-contained deployment (SCD). ランタイム ID (RID) の一覧については、RID カタログに関するページをご覧ください。For a list of Runtime Identifiers (RIDs), see the RID catalog. 既定では、フレームワークに依存する展開 (FDD) が発行されます。Default is to publish a framework-dependent deployment (FDD).

-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 to replace the asterisk (*) in the version field of the project file.


現在のディレクトリのプロジェクトを発行します。Publish the project in the current directory:

dotnet publish

指定されたプロジェクト ファイルを使用して、アプリケーションを発行します。Publish the application using the specified project file:

dotnet publish ~/projects/app1/app1.csproj

netcoreapp1.1 フレームワークを使って現在のディレクトリ内のプロジェクトを発行します。Publish the project in the current directory using the netcoreapp1.1 framework:

dotnet publish --framework netcoreapp1.1

netcoreapp1.1 フレームワークと OS X 10.10 のランタイム (この RID はプロジェクト ファイルに列挙しておく必要があります) を使って、現在のアプリケーションを発行します。Publish the current application using the netcoreapp1.1 framework and the runtime for OS X 10.10 (you must list this RID in the project file).

dotnet publish --framework netcoreapp1.1 --runtime osx.10.11-x64

現在のアプリケーションを発行します。ただし、復元操作中はルート プロジェクトのみを復元し、プロジェクト間 (P2P) 参照は復元しないでください (.NET Core SDK 2.0 以降のバージョン)。Publish the current application but don't restore project-to-project (P2P) references, just the root project during the restore operation (.NET Core SDK 2.0 and later versions):

dotnet publish --no-dependencies

関連項目See also