.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) を指定することによって作成されます。
修正プログラムのバージョンのロール フォワードの概要
restore
、 build
と publish
は、個別に実行できる dotnet
コマンドです。 ランタイムの選択は、restore
やpublish
ではなく、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-restore
で dotnet publish
引数を使用する場合は、次のいずれかを選択します。
フレームワークに依存する動作を優先します。 アプリケーションがフレームワークに依存している場合は、これが既定の動作です。 アプリケーションが自己完結型で、パッチが適用されていない 2.1.0 ローカル ランタイムを使用できる場合は、プロジェクト ファイルで
TargetLatestRuntimePatch
をfalse
に設定します。自己完結型の動作を優先します。 アプリケーションが自己完結型の場合、これが既定の動作です。 アプリケーションがフレームワークに依存していて、最新のパッチがインストールされている必要がある場合は、
TargetLatestRuntimePatch
をプロジェクト ファイルにtrue
に設定します。プロジェクト ファイル内の特定のパッチ バージョンに
RuntimeFrameworkVersion
を設定して、ランタイム フレームワークのバージョンを明示的に制御します。
.NET