第4章 .NET Core 3.1 を使用したアプリケーションの公開

.NET Core 3.1 アプリケーションを公開して、共有されたシステム全体で使用される .NET Core を使用するか、.NET Core を追加できます。

.NET Core 3.1 アプリケーションを公開するには、以下のメソッドがあります。

  • フレームワーク依存デプロイメント (FDD): アプリケーションは、共有されたシステム全体の .NET バージョンを使用します。
注記

RHEL にアプリケーションを公開する場合、Red Hat では FDD を使用することを推奨しています。これは、アプリケーションが、Red Hat が構築した最新バージョンの .NET Core を使用していることを保証するためです。これは、特定のネイティブ依存関係のセットを使用します。これらのネイティブライブラリーは、rh-dotnet31 Software Collection に含まれます。

  • SCD (自己完結型デプロイメント): アプリケーションには .NET が含まれます。この方法では、Microsoft が構築したランタイムを使用します。ネイティブライブラリーが使用できなくなるため、rh-dotnet31 Software Collection 以外でアプリケーションを実行すると問題が発生する可能性があります。

前提条件

  • 既存の .NET Core アプリケーション。

    .NET Core アプリケーションの作成方法は、次を参照してください。

4.1. .NET Core アプリケーションの公開

以下の手順では、フレームワーク依存アプリケーションを公開する方法を概説します。

手順

  1. フレームワーク依存アプリケーションを公開します。

    $ dotnet publish my-app -f netcoreapp3.1 -c Release

    my-app を公開するアプリケーションの名前に置き換えます。

  2. 任意: アプリケーションが RHEL 専用の場合は、次のコマンドを使用してその他のプラットフォームに必要な依存関係を削除します。

    $ dotnet restore my-app -r rhel.7-x64
    $ dotnet publish my-app -f netcoreapp3.1 -c Release -r rhel.7-x64 --self-contained false
  3. Software Collection を有効にし、アプリケーション名を渡して、RHEL システムでアプリケーションを実行します。

    $ scl enable rh-dotnet31 -- dotnet <app>.dll
  4. scl enable rh-dotnet31 — dotnet <app>.dll コマンドを、アプリケーションで公開されるスクリプトに追加できます。

    以下のスクリプトをプロジェクトに追加し、APP 変数を更新します。

    #!/bin/bash
    
    APP=<app>
    SCL=rh-dotnet31
    DIR="$(dirname "$(readlink -f "$0")")"
    
    scl enable $SCL -- "$DIR/$APP" "$@"
  5. パブリッシュ時にスクリプトを含めるには、この ItemGroupcsproj ファイルに追加します。

    <ItemGroup>
        <None Update="<scriptname>" Condition="'$(RuntimeIdentifier)' == 'rhel.7-x64' and '$(SelfContained)' == 'false'" CopyToPublishDirectory="PreserveNewest" />
    </ItemGroup>