-p:PublishReadyToRun=true
に加えて--no-restore
を使用してプロジェクトを発行した場合、プロジェクトは以前のdotnet restore
操作で復元されたパッケージでのみビルドされます。 .NET 5 では、このプロセスが機能し、クロスジェンのバイナリが生成されました。 .NET 6 では、この同じプロセスが NETSDK1094 エラーで失敗します。
導入されたバージョン
.NET 6
以前の動作
以前のバージョンでは、crossgen アプリケーションはランタイムと共にパッケージ化されていました。 その結果、プロジェクトが復元されたかどうかに関係なく、crossgen プロセスをアプリケーションで実行できました。
dotnet restore
をdotnet publish
から分離し、--no-restore
を発行コマンドに追加して、追加のネットワーク アクセスが発生しないようにするのが一般的な方法でした。
新しい動作
.NET 6 では、 dotnet restore
の後に dotnet publish -p:PublishReadyToRun=true --no-restore
が続き、NETSDK1094 エラーで失敗します。 これは、crossgen バイナリが別の NuGet パッケージとして出荷されるようになったため、発行を成功させるためには復元操作の一部である必要があるためです。
変更の理由
多くのワークロードでは crossgen バイナリは必要ないため、メイン SDK から分割されました。 通常は要求時に取得され、発行する MSBuild ターゲットによって、復元するパッケージの一覧にパッケージを追加することで、この取得が処理されるようになりました。
推奨されるアクション
- 分離された発行エクスペリエンスを維持する場合は、ReadyToRun を発行することを復元手順に指示します。 復元コマンド ラインにも
-p:PublishReadyToRun=true
を追加します。 - または、発行コマンド ラインから
--no-restore
を削除して、publish コマンドで crossgen も復元できるようにします。
.NET