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
Description
dotnet restore 命令會使用 NuGet 來還原相依性以及專案檔中指定的專案特定工具。 在大部分情況下,您不需要明確使用 dotnet restore 命令,因為當您執行下列命令時,會隱含地執行NuGet還原:
有時候,使用這些命令執行隱含NuGet還原可能很不方便。 例如,某些自動化系統,像是建置系統,必須明確呼叫 dotnet restore 以控制還原發生的時間,進而控制網路使用量。 若要防止隱含NuGet還原,您可以使用 --no-restore 旗標搭配上述任何命令來停用隱含還原。
指定摘要
若要還原相依性,NuGet 需要套件所在的摘要。 摘要通常透過 nuget.config 組態檔提供。 安裝 .NET SDK 時,會提供預設組態檔。 若要指定其他摘要,請執行下列其中一項:
- 在專案目錄中建立您自己的 nuget.config 檔案。 如需詳細資訊,請參閱本文稍後的常見NuGet組態和nuget.config差異。
- 使用
dotnet nuget之類的dotnet nuget add source命令。
您可以使用 選項覆寫 nuget.config 摘要 -s 。
如需如何使用已驗證摘要的詳細資訊,請參閱 從已驗證摘要取用套件。
全域套件資料夾
針對相依性,您可以使用 --packages 引數指定已還原套件在還原作業期間的放置位置。 如果未指定,則會使用預設的 NuGet 套件快取,它位於所有作業系統上使用者主目錄的 .nuget/packages 目錄中。 例如,Linux 上的 /home/user1 或 Windows 上的 C:\Users\user1。
Project特定工具
針對專案特定工具,dotnet restore 會先還原在其中封裝工具的套件,然後繼續還原其專案檔中所指定的工具相依性。
nuget.config 差異
nuget.config 檔案中設定 (如果有的話) 會影響 dotnet restore 命令的行為。 例如,在 nuget.config 中設定 globalPackagesFolder 會將還原的 NuGet 套件置於所指定資料夾。 這是在 dotnet restore 命令上指定 --packages 選項的替代方式。 如需詳細資訊,請參閱 nuget.config 參考。
dotnet restore 會忽略三個特定設定:
-
系結重新導向不適用於
<PackageReference>專案,而 .NET 僅支援<PackageReference>NuGet套件的元素。 -
此設定Visual Studio特定,不適用於 .NET。 .NET 不會使用
packages.config檔案,而是使用<PackageReference>元素來NuGet套件。 -
.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 目錄。 多次指定這個選項來提供多個 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