共用方式為


發佈包含 --no-restore 的 ReadyToRun 專案時需要對還原進行變更

若您發佈的專案包含 -p:PublishReadyToRun=true 以及 --no-restore,該專案只會使用已在先前 dotnet restore 作業中還原的套件進行建置。 此處理序在 .NET 5 中可運作並產生 crossgen'd 二進位檔案。 在 .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,以允許發佈命令還原 crossgen。