.NET Core アプリケーションの展開.NET Core application deployment

.NET Core アプリケーションに対して、次の 2 種類の展開を作成できます。You can create two types of deployments for .NET Core applications:

  • フレームワークに依存する展開。Framework-dependent deployment. 名前が示すように、フレームワークに依存する展開 (FDD) は、ターゲット システムに .NET Core のシステム全体の共有バージョンが存在することに依存します。As the name implies, framework-dependent deployment (FDD) relies on the presence of a shared system-wide version of .NET Core on the target system. .NET Core は既に存在するので、アプリは .NET Core のインストール間で移植することもできます。Because .NET Core is already present, your app is also portable between installations of .NET Core. アプリには、それ自体のコード、および .NET Core ライブラリの外部にあるサードパーティの依存関係のみが含まれています。Your app contains only its own code and any third-party dependencies that are outside of the .NET Core libraries. FDD には、コマンドラインから dotnet ユーティリティを使って起動できる .dll ファイルが含まれています。FDDs contain .dll files that can be launched by using the dotnet utility from the command line. たとえば、dotnet app.dllapp という名前のアプリケーションを実行します。For example, dotnet app.dll runs an application named app.

  • 自己完結型の展開。Self-contained deployment. FDD とは異なり、自己完結型の展開 (SCD) は、ターゲット システムに共有コンポーネントが存在することに依存しません。Unlike FDD, a self-contained deployment (SCD) doesn't rely on the presence of shared components on the target system. .NET Core ライブラリと .NET Core ランタイムの両方を含むすべてのコンポーネントがアプリケーションに含まれており、他の .NET Core アプリケーションから分離されています。All components, including both the .NET Core libraries and the .NET Core runtime, are included with the application and are isolated from other .NET Core applications. SCD には、プラットフォーム固有の .NET Core ホストの名前変更後のバージョンである実行可能ファイル (app という名前のアプリケーションに対する Windows プラットフォーム上の app.exe など)、および実際のアプリケーションである .dll ファイル (app.dll など) が含まれています。SCDs include an executable (such as app.exe on Windows platforms for an application named app), which is a renamed version of the platform-specific .NET Core host, and a .dll file (such as app.dll), which is the actual application.

フレームワークに依存する展開 (FDD)Framework-dependent deployments (FDD)

FDD では、アプリ、およびサードパーティの依存関係のみを展開します。For an FDD, you deploy only your app and any third-party dependencies. アプリは、ターゲット システムに存在する .NET Core のバージョンを使うので、.NET Core を展開する必要はありません。You don't have to deploy .NET Core, since your app will use the version of .NET Core that's present on the target system. これは、.NET Core アプリの既定の展開モデルです。This is the default deployment model for .NET Core apps.

フレームワークに依存する展開を作成する理由Why create a framework-dependent deployment?

FDD の展開には、次のいくつかの利点があります。Deploying an FDD has a number of advantages:

  • .NET Core アプリが実行されるターゲットのオペレーティング システムを事前に定義する必要はありません。You don't have to define the target operating systems that your .NET Core app will run on in advance. .NET Core は、オペレーティング システムに関係なく実行可能ファイルとライブラリに共通の PE ファイル形式を使用するので、.NET Core は、基になるオペレーティング システムに関係なくアプリを実行できます。Because .NET Core uses a common PE file format for executables and libraries regardless of operating system, .NET Core can execute your app regardless of the underlying operating system. PE ファイル形式の詳細については、「.NET Assembly File Format」 (.NET アセンブリのファイル形式) を参照してください。For more information on the PE file format, see .NET Assembly File Format.

  • 展開パッケージは小サイズです。The size of your deployment package is small. .NET Core 自体ではなく、アプリとその依存関係のみを展開します。You only deploy your app and its dependencies, not .NET Core itself.

  • 複数のアプリが、同じ .NET Core インストールを使用します。これにより、ホスト システム上のディスク領域とメモリ使用量の両方が削減されます。Multiple apps use the same .NET Core installation, which reduces both disk space and memory usage on host systems.

次のいくつかの短所もあります。There are also a few disadvantages:

  • ターゲットとする .NET Core のバージョンまたはそれ以降のバージョンがホスト システムに既にインストールされている場合にのみ、アプリを実行できます。Your app can run only if the version of .NET Core that you target, or a later version, is already installed on the host system.

  • 将来のリリースでは、ユーザーの認識なしに .NET Core ランタイムおよびライブラリが変更される場合があります。It's possible for the .NET Core runtime and libraries to change without your knowledge in future releases. まれなケースでは、アプリのビヘイビアーが変更される可能性があります。In rare cases, this may change the behavior of your app.

自己完結型の展開 (SCD)Self-contained deployments (SCD)

自己完結型の展開では、アプリおよびすべての必要なサードパーティの依存関係と共に、アプリのビルドに使った .NET Core のバージョンも展開します。For a self-contained deployment, you deploy your app and any required third-party dependencies along with the version of .NET Core that you used to build the app. SCD の作成には、さまざまなプラットフォーム上の .NET Core のネイティブの依存関係は含まれないので、アプリが実行する前にこれらが存在している必要があります。Creating an SCD doesn't include the native dependencies of .NET Core on various platforms, so these must be present before the app runs.

FDD および SCD の展開では別個のホスト実行可能ファイルを使用するため、発行元のシグネチャで SCD のホスト実行可能ファイルに署名できます。FDD and SCD deployments use separate host executables, so you can sign a host executable for an SCD with your publisher signature.

自己完結型の展開を展開する理由Why deploy a self-contained deployment?

自己完結型の展開を展開するのには、次の 2 つの主な利点があります。Deploying a Self-contained deployment has two major advantages:

  • アプリで展開されている .NET Core のバージョンは、あなただけがコントロールできます。You have sole control of the version of .NET Core that is deployed with your app. .NET Core を操作できるのはあなただけです。.NET Core can be serviced only by you.

  • ターゲット システムが実行できる .NET Core のバージョンを提供しているので、ターゲット システムで .NET Core アプリを確実に実行できます。You can be assured that the target system can run your .NET Core app, since you're providing the version of .NET Core that it will run on.

また、次のいくつかの短所もあります。It also has a number of disadvantages:

  • .NET Core が展開パッケージに含まれているので、展開パッケージをビルドするターゲット プラットフォームを事前に選択する必要があります。Because .NET Core is included in your deployment package, you must select the target platforms for which you build deployment packages in advance.

  • .NET Core だけでなくアプリおよびそのサードパーティの依存関係を含める必要があるので、展開パッケージは比較的大きくなります。The size of your deployment package is relatively large, since you have to include .NET Core as well as your app and its third-party dependencies.

  • 多数の自己完結型の .NET Core アプリをシステムに展開すると、各アプリが .NET Core ファイルを複製するので、非常に多くのディスク領域を使用する可能性があります。Deploying numerous self-contained .NET Core apps to a system can consume significant amounts of disk space, since each app duplicates .NET Core files.

手順の例Step-by-step examples

CLI ツールで .NET Core アプリを展開する手順の例については、「Deploying .NET Core Apps with CLI Tools」(CLI ツールで .NET Core アプリを展開する) をご覧ください。For step-by-step examples of deploying .NET Core apps with CLI tools, see Deploying .NET Core Apps with CLI Tools. Visual Studio で .NET Core アプリを展開する手順の例については、「Deploying .NET Core Apps with Visual Studio」(Visual Studio で .NET Core アプリを展開する) をご覧ください。For step-by-step examples of deploying .NET Core apps with Visual Studio, see Deploying .NET Core Apps with Visual Studio. 各トピックには、次の展開の例が含まれます。Each topic includes examples of the following deployments:

  • フレームワークに依存する展開Framework-dependent deployment
  • サードパーティの依存関係を含む、フレームワークに依存する展開Framework-dependent deployment with third-party dependencies
  • 自己完結型の展開Self-contained deployment
  • サードパーティの依存関係を含む、自己完結型の展開Self-contained deployment with third-party dependencies

関連項目See also

CLI ツールで .NET Core アプリを展開する Deploying .NET Core Apps with CLI Tools
Visual Studio で .NET Core アプリを展開する Deploying .NET Core Apps with Visual Studio
パッケージ、メタパッケージ、フレームワーク Packages, Metapackages and Frameworks
.NET Core のランタイム識別子 (RID) のカタログ.NET Core Runtime IDentifier (RID) catalog