次の方法で共有


--no-restore を使用して ReadyToRun プロジェクトを発行するには、復元を変更する必要があります

-p:PublishReadyToRun=trueに加えて--no-restoreを使用してプロジェクトを発行した場合、プロジェクトは以前のdotnet restore操作で復元されたパッケージでのみビルドされます。 .NET 5 では、このプロセスが機能し、クロスジェンのバイナリが生成されました。 .NET 6 では、この同じプロセスが NETSDK1094 エラーで失敗します。

導入されたバージョン

.NET 6

以前の動作

以前のバージョンでは、crossgen アプリケーションはランタイムと共にパッケージ化されていました。 その結果、プロジェクトが復元されたかどうかに関係なく、crossgen プロセスをアプリケーションで実行できました。 dotnet restoredotnet 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 も復元できるようにします。