自己完結型展開ランタイムのロール フォワード
.NET Core 自己完結型のアプリケーション展開には、.NET Core ライブラリと .NET Core ランタイムの両方が含まれます。 .NET Core 2.1 SDK (バージョン 2.1.300) 以降、自己完結型のアプリケーションのデプロイでは、お使いのコンピューター上にある最新の修正プログラムのランタイムを発行するようになりました。 既定では、自己完結型展開のための dotnet publish
では、発行マシン上に SDK の一部としてインストールされている最新バージョンが選択されます。 これにより、展開したアプリケーションを publish
時に利用可能なセキュリティ修正プログラム (およびその他の修正) と共に実行できます。 新しい修正プログラムを取得するには、アプリケーションを再発行する必要があります。 dotnet publish
コマンドで -r <RID>
を指定するか、プロジェクト ファイル (csproj / vbproj) 内またはコマンド ライン上で ランタイム識別子 (RID) を指定すると、自己完結型のアプリケーションが作成されます。
修正プログラムのバージョンのロール フォワードの概要
restore
、build
および publish
は、個別に実行できる dotnet
コマンドです。 ランタイムの選択は、publish
や build
ではなく、restore
操作の一部です。 publish
を呼び出す場合、修正プログラムの最新バージョンが選択されます。 --no-restore
引数で publish
を呼び出した場合、以前の restore
はポリシーを発行する新しい自己完結型のアプリケーションで実行されていない可能性があるため、必要な修正プログラムのバージョンを取得しない可能性があります。 この場合、次のようなテキストでビルド エラーが生成されます。
"プロジェクトは Microsoft.NETCore.App バージョン 2.0.0 を使用して復元されましたが、代わりに最新の設定、バージョン 2.0.6 が使用されます。 この問題を解決するには、復元およびこれ以降の操作 (ビルドや発行など) で同じ設定を使用していることをご確認ください。 通常、この問題は、ビルドや発行の実行時に RuntimeIdentifier プロパティを設定したが、復元時には設定していない場合に発生することがあります。
注意
restore
と build
は、publish
などの別のコマンドの一部として暗黙的に実行できます。 別のコマンドの一部として暗黙的に実行すると、追加のコンテキストと共に提供されるため、適切な成果物が生成されます。 ランタイム (例: dotnet publish -r linux-x64
) で publish
を行う場合、暗黙的な restore
では linux-x64 ランタイムのパッケージを復元します。 明示的に restore
を呼び出す場合、そのコンテキストが含まれないため、既定でランタイム パッケージは復元されません。
発行時に復元を回避する方法
publish
操作の一部として restore
を実行することは、お客様のシナリオにとって望ましくない場合があります。 自己完結型のアプリケーションを作成しているときの publish
時に restore
を回避するには、次の操作を行います。
RuntimeIdentifiers
プロパティに、発行されるすべての RID をセミコロンで区切って設定します。TargetLatestRuntimePatch
プロパティをtrue
に設定します。
dotnet publish オプションでの no-restore 引数
同じプロジェクト ファイルで自己完結型のアプリケーションとフレームワークに依存するアプリケーションの両方を作成する場合、dotnet publish
で --no-restore
引数を使用する場合は、次のいずれかを選択します。
フレームワークに依存する動作を優先します。 アプリケーションがフレームワークに依存する場合、これが既定の動作になります。 アプリケーションが自己完結型で、修正プログラムが適用されていない 2.1.0 のローカル ランタイムを使用できる場合、プロジェクト ファイルで
TargetLatestRuntimePatch
をfalse
に設定します。自己完結型の動作を優先します。 アプリケーションが自己完結型の場合、これが既定の動作になります。 アプリケーションがフレームワークに依存し、最新の修正プログラムがインストールされている必要がある場合、プロジェクト ファイルで
TargetLatestRuntimePatch
をtrue
に設定します。プロジェクト ファイルで
RuntimeFrameworkVersion
に特定の修正プログラムのバージョンを設定して、ランタイム フレームワークのバージョンの明示的なコントロールを取得します。
.NET