共用方式為


獨立式部署執行階段進階更新

.NET Core 獨立應用程式部署 包括 .NET Core 連結庫和 .NET Core 運行時間。 從 .NET Core 2.1 SDK(2.1.300 版)開始,獨立應用程式部署 會在您的計算機上發佈最高的修補程式運行時間。 根據預設,針對獨立式部署, dotnet publish 選取在發佈計算機上安裝為 SDK 的最新版本。 這可讓您部署的應用程式在publish期間使用可獲得的安全性修正(以及其他修正)來運行。 應用程式必須重新發佈,才能取得新的修補程式。 獨立應用程式是藉由在 命令上-r <RID>指定dotnet publish,或在項目檔 (csproj / vbproj) 或命令行中指定運行時間標識符 (RID) 來建立。

修補程式版本進行更新概觀

restorebuildpublishdotnet 可以個別執行的命令。 執行時間選擇是作業的 restore 一部分,不是 publishbuild。 如果您呼叫 publish,則會選擇最新的修補程式版本。 如果您以publish自變數呼叫--no-restore,則可能無法取得所需的修補版本,因為先前的restore可能尚未使用新自包含應用程式發佈政策執行。 在此情況下,會產生類似下列文字的組建錯誤:

「專案已使用 Microsoft.NETCore.App 2.0.0 版還原,但目前設定會改用 2.0.6 版。 若要解決此問題,請確定用於還原和後續作業(例如建置或發佈)的相同設定。 如果 RuntimeIdentifier 屬性是在建置或發布期間設定,但在還原期間未設定,通常就會發生此問題。

備註

restorebuild 可以隱含地作為另一個命令的一部分執行,例如 publish。 當以隱含方式作為另一個命令的一部分執行時,它們會提供額外的內容,以便產生正確的成品。 當您 publish 使用特定的運行時(例如,dotnet publish -r linux-x64)時,restore 會自動還原 Linux-x64 運行時的套件。 如果您明確呼叫 restore ,它預設不會還原執行時套件,因為它沒有此內容。

如何避免在發佈期間進行還原操作

在您的案例中,以作業的一部分執行restorepublish 可能不受歡迎。 若要避免在建立獨立應用程式期間發生 restorepublish ,請採取以下步驟:

  • RuntimeIdentifiers 屬性設定為要發行之所有 RID 的分號分隔清單。
  • TargetLatestRuntimePatch 屬性設定為 true

具有 dotnet publish 選項的 No-restore 參數

如果您想要使用相同的項目檔建立獨立應用程式和架構相依應用程式,而且您想要搭配 --no-restore使用 dotnet publish 自變數,請選擇下列其中一項:

  1. 偏好架構相依行為。 如果應用程式相依於架構,則這是預設行為。 如果應用程式是獨立的,而且可以使用未修補的 2.1.0 本機執行時間,請在項目檔中將 設定 TargetLatestRuntimePatchfalse

  2. 偏好獨立行為。 如果應用程式是獨立的,這是預設行為。 如果應用程式與架構相依,而且需要安裝最新的修補程式,請在項目檔中將 設定 TargetLatestRuntimePatchtrue

  3. 將 設定 RuntimeFrameworkVersion 為項目檔中的特定修補程式版本,以明確控制運行時間架構版本。