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