次の方法で共有


自己完結型展開ランタイムのロール フォワード

.NET Core 自己完結型アプリケーションのデプロイ には、.NET Core ライブラリと .NET Core ランタイムの両方が含まれます。 .NET Core 2.1 SDK (バージョン 2.1.300) 以降では、自己完結型アプリケーションデプロイによって 、コンピューター上で最高のパッチ ランタイムが発行されます。 既定では、自己完結型展開の dotnet publish は、発行マシン上の SDK の一部としてインストールされている最新バージョンを選択します。 これにより、デプロイされたアプリケーションは、 publish中に使用可能なセキュリティ修正プログラム (およびその他の修正プログラム) を使用して実行できます。 新しいパッチを取得するには、アプリケーションを再発行する必要があります。 自己完結型アプリケーションは、-r <RID> コマンドでdotnet publishを指定するか、プロジェクト ファイル (csproj/ vbproj) またはコマンド ラインでランタイム識別子 (RID) を指定することによって作成されます。

修正プログラムのバージョンのロール フォワードの概要

restorebuildpublish は、個別に実行できる dotnet コマンドです。 ランタイムの選択は、restorepublishではなく、build操作の一部です。 publishを呼び出すと、最新のパッチ バージョンが選択されます。 publish引数を指定して--no-restoreを呼び出した場合、以前のrestoreが新しい自己完結型アプリケーション発行ポリシーで実行されていない可能性があるため、目的のパッチ バージョンが得られない可能性があります。 この場合、次のようなテキストでビルド エラーが生成されます。

"プロジェクトはバージョン 2.0.0 Microsoft.NETCore.App 使用して復元されましたが、現在の設定では、代わりにバージョン 2.0.6 が使用されます。 この問題を解決するには、復元と、ビルドや発行などの後続の操作に同じ設定が使用されていることを確認します。 通常、この問題は、RuntimeIdentifier プロパティがビルド中または発行中に設定されているが、復元時には設定されていない場合に発生する可能性があります。"

restore buildは、publishなど、別のコマンドの一部として暗黙的に実行できます。 別のコマンドの一部として暗黙的に実行すると、適切な成果物が生成されるように、追加のコンテキストが提供されます。 ランタイムを publish すると (たとえば、 dotnet publish -r linux-x64)、暗黙的な restore は linux-x64 ランタイムのパッケージを復元します。 restoreを明示的に呼び出した場合、そのコンテキストがないため、ランタイム パッケージは既定では復元されません。

発行中に復元を回避する方法

restore操作の一部としてpublishを実行することは、シナリオにとって望ましくない場合があります。 自己完結型アプリケーションの作成時にrestore中のpublishを回避するには、次の操作を行います。

  • RuntimeIdentifiers プロパティを、パブリッシュするすべての RID のセミコロン区切りのリストに設定します。
  • TargetLatestRuntimePatch プロパティを trueに設定します。

dotnet publish オプションでの no-restore 引数

自己完結型アプリケーションとフレームワーク依存アプリケーションの両方を同じプロジェクト ファイルで作成し、--no-restoredotnet publish 引数を使用する場合は、次のいずれかを選択します。

  1. フレームワークに依存する動作を優先します。 アプリケーションがフレームワークに依存している場合は、これが既定の動作です。 アプリケーションが自己完結型で、パッチが適用されていない 2.1.0 ローカル ランタイムを使用できる場合は、プロジェクト ファイルで TargetLatestRuntimePatchfalse に設定します。

  2. 自己完結型の動作を優先します。 アプリケーションが自己完結型の場合、これが既定の動作です。 アプリケーションがフレームワークに依存していて、最新のパッチがインストールされている必要がある場合は、 TargetLatestRuntimePatch をプロジェクト ファイルに true に設定します。

  3. プロジェクト ファイル内の特定のパッチ バージョンに RuntimeFrameworkVersion を設定して、ランタイム フレームワークのバージョンを明示的に制御します。