次のプロパティのいずれかを指定するプロジェクトでは、 ランタイム識別子 (RID) が自動的に取得されるようになりました。 RID を使用すると、自己完結型デプロイを発行できます。
SelfContained
PublishAot
PublishReadyToRun
PublishSingleFile
-
PublishSelfContained
(.NET SDK 7.0.200 以降のバージョンのみ)
この変更により、次のプロジェクトが影響を受ける可能性があります。
- 不足しているランタイム識別子エラーを回避した古いプロジェクト。
-
RuntimeIdentifiers
があり、RuntimeIdentifier
されていないプロジェクト。 - ハードコーディングされたパスを RID なしで使用するプロジェクト。
- これらのプロパティを持っていたが、発行ではなくビルドを使用し、発行が壊れた状態になるのを受け入れたプロジェクト。
まだ認識されていない、個々の状況を壊す可能性のある、他の潜在的な微妙な違いがあります。
注
この変更は、.NET 7.0.200 SDK の dotnet publish
コマンドに制限されていました。 詳細については、「発行専用の自動 RuntimeIdentifier」を参照してください。
導入されたバージョン
.NET 7
以前の動作
以前は、次のようなエラーでこれらのプロジェクトを発行できませんでした。
RuntimeIdentifier を指定せずに単一ファイルにアプリケーションを発行することはサポートされていません。 RuntimeIdentifier を指定するか、PublishSingleFile を false に設定してください。
または
error NETSDK1031: RuntimeIdentifier を指定せずに自己完結型アプリケーションをビルドまたは発行することはできません。 RuntimeIdentifier を指定するか、SelfContained を false に設定する必要があります。
PublishSingleFile
や特殊なRuntimeIdentifiers
ロジックなど、プロジェクトがRuntimeIdentifier
なしで正常にビルドされている場合があります。
新しい動作
この記事の冒頭に示したプロパティのいずれかを指定するプロジェクトでは、 RuntimeIdentifier
が自動的に取得されます。 この新しい動作により、 RuntimeIdentifiers
に依存しているが RuntimeIdentifier
に依存しないプロジェクトでビルド エラーが発生する可能性があります。これは、 RuntimeIdentifier
が RuntimeIdentifiers
とは異なる出力パスに影響を与える可能性があるためです。 また、AnyCPU
に依存しているが、他のアクションを実行するときに常にPublishSingleFile
を与えるとは限らないRuntimeIdentifier
プロジェクトでエラーが発生する可能性もあります。 これらのエラーは、次のように表示されます。
CoreCLR 開始イベントを発生させることなく、ターゲット プロセスが終了しました。 ターゲット プロセスが .NET Core を使用するように構成されていることを確認します。
破壊的変更の種類
この変更は ソースの互換性に影響を与える可能性があります。
変更の理由
.NET プロジェクトの大半は、 RuntimeIdentifier
設定されていないプロパティを使用して発行できません。 この変更により、前述のプロパティを使用するたびに RID を手動で追加する必要が減ります。
推奨されるアクション
プロジェクトが影響を受ける場合は、プロジェクト ファイルにRuntimeIdentifier
を追加することで、自動<UseCurrentRuntimeIdentifier>false</UseCurrentRuntimeIdentifier>
を無効にすることができます。
出力パスの変更によって中断が発生した場合は、プロジェクト ファイルに <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
を追加します。
こちらも参照ください
.NET