dotnet restore

本文適用于: ✔️.NET Core 3.1 SDK 和更新版本

名稱

dotnet restore - 還原專案的相依性和工具。

概要

dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-parallel]
    [-f|--force] [--force-evaluate] [--ignore-failed-sources]
    [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
    [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
    [--use-lock-file] [-v|--verbosity <LEVEL>]

dotnet restore -h|--help

描述

dotnet restore 命令會使用 NuGet 來還原相依性以及專案檔中指定的專案特定工具。 在大部分情況下,您不需要明確使用 dotnet restore 命令,因為當您執行下列命令時,NuGet 還原會隱含地執行:

有時候,使用這些命令執行隱含 NuGet 還原可能很不方便。 例如,某些自動化系統,像是建置系統,必須明確呼叫 dotnet restore 以控制還原發生的時間,進而控制網路使用量。 若要防止隱含 NuGet 還原,您可以使用 --no-restore 旗標搭配上述任何命令來停用隱含還原。

注意

在還原作業期間簽署的套件驗證需要憑證根憑證存放區,這同時適用于程式碼簽署和時間戳記。 如需詳細資訊 ,請參閱 NuGet 簽署的套件驗證

指定摘要

若要還原相依性,NuGet 需要套件所在的摘要。 摘要通常透過 nuget.config 組態檔提供。 安裝 .NET SDK 時,會提供預設組態檔。 若要指定其他摘要,請執行下列其中一項:

您可以使用 選項覆寫 nuget.config 摘要 -s

如需如何使用已驗證摘要的詳細資訊,請參閱 從已驗證摘要取用套件

全域套件資料夾

針對相依性,您可以使用 --packages 引數指定已還原套件在還原作業期間的放置位置。 如果未指定,則會使用預設的 NuGet 套件快取,它位於所有作業系統上使用者主目錄的 .nuget/packages 目錄中。 例如,Linux 上的 /home/user1 或 Windows 上的 C:\Users\user1

專案特定工具

針對專案特定工具,dotnet restore 會先還原在其中封裝工具的套件,然後繼續還原其專案檔中所指定的工具相依性。

nuget.config 差異

nuget.config 檔案中設定 (如果有的話) 會影響 dotnet restore 命令的行為。 例如,在 nuget.config 中設定 globalPackagesFolder 會將還原的 NuGet 套件置於所指定資料夾。 這是在 dotnet restore 命令上指定 --packages 選項的替代方式。 如需詳細資訊,請參閱 nuget.config 參考

dotnet restore 會忽略三個特定設定:

  • bindingRedirects

    系結重新導向不適用於 <PackageReference> 元素,而 .NET 僅支援 <PackageReference> NuGet 套件的元素。

  • 解決方案

    此設定為 Visual Studio 特定,不適用於 .NET。 .NET 不會使用 packages.config 檔案,而是使用 <PackageReference> NuGet 套件的 元素。

  • trustedSigners

    .NET 5.0.100 SDK 已新增支援跨平臺套件簽章驗證。

工作負載資訊清單下載

當您執行此命令時,它會起始工作負載廣告資訊清單的非同步背景下載。 如果下載仍在此命令完成時執行,則會停止下載。 如需詳細資訊,請參閱 廣告資訊清單

引數

  • ROOT

    要還原之專案檔的選用路徑。

選項

  • --configfile <FILE>

    NuGet 組態檔 (nuget.config) 使用。 如果指定,則只會使用此檔案中的設定。 如果未指定,將會使用來自目前目錄的組態檔階層。 如需詳細資訊,請參閱 常見的 NuGet 組態

  • --disable-parallel

    停用平行還原多個專案。

  • --force

    即使最後的還原成功,仍強制解析所有相依性。 指定這個旗標等同於刪除 project.assets.json 檔案。

  • --force-evaluate

    強制還原以重新評估所有相依性,即使鎖定檔案已經存在也一樣。

  • -?|-h|--help

    列印出如何使用 命令的描述。

  • --ignore-failed-sources

    如果有套件符合版本需求,則只會警告有關失敗的來源。

  • --interactive

    可讓命令停止,並等候使用者輸入或進行動作。 例如完成驗證。

  • --lock-file-path <LOCK_FILE_PATH>

    寫入專案鎖定檔案的輸出位置。 根據預設,這會 PROJECT_ROOT\packages.lock.json

  • --locked-mode

    不允許更新專案鎖定檔。

  • --no-cache

    指定不要快取 HTTP 要求。

  • --no-dependencies

    在還原包含專案對專案 (P2P) 參考的專案時,會還原根專案,而非參考。

  • --packages <PACKAGES_DIRECTORY>

    指定已還原套件的目錄。

  • -r|--runtime <RUNTIME_IDENTIFIER>

    指定套件還原的執行階段。 這用來針對 .csproj 檔案內 <RuntimeIdentifiers> 標記中未明確列出的執行階段還原套件。 如需執行階段識別項 (RID) 清單,請參閱 RID 目錄

  • -s|--source <SOURCE>

    指定要在還原作業期間使用的 NuGet 套件來源 URI。 此設定會覆寫 nuget.config 檔案中指定的所有來源。 多次指定這個選項,即可提供多個來源。

  • --use-lock-file

    啟用專案鎖定檔,以便產生並用於還原。

  • -v|--verbosity <LEVEL>

    設定命令的詳細資訊層級。 允許的值為 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]。 預設為 minimal。 如需詳細資訊,請參閱LoggerVerbosity

範例

  • 還原目前目錄中專案的相依性和工具︰

    dotnet restore
    
  • 還原在指定路徑中找到之 app1 專案的相依性和工具︰

    dotnet restore ./projects/app1/app1.csproj
    
  • 使用提供為來源的檔案路徑,還原目前目錄中專案的相依性和工具︰

    dotnet restore -s c:\packages\mypackages
    
  • 使用提供為來源的兩個檔案路徑,還原目前目錄中專案的相依性和工具︰

    dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
    
  • 在目前目錄中還原專案的相依性和工具,其中顯示詳細輸出:

    dotnet restore --verbosity detailed