dotnet add package
本文適用於: ✔️ .NET Core 3.1 SDK 與更新版本
名稱
dotnet add package
- 在專案檔中新增或更新套件參考。
概要
dotnet add [<PROJECT>] package <PACKAGE_NAME>
[-f|--framework <FRAMEWORK>] [--interactive]
[-n|--no-restore] [--package-directory <PACKAGE_DIRECTORY>]
[--prerelease] [-s|--source <SOURCE>] [-v|--version <VERSION>]
dotnet add package -h|--help
描述
dotnet add package
命令提供方便的選項,可以在專案檔中新增或更新套件參考。 您執行命令之後,會執行相容性檢查,確保套件與專案中的基礎結構相容。 如果檢查通過,而且專案檔中未參考套件,<PackageReference>
元素就會新增至專案檔。 如果檢查通過,而且專案檔中已經參考套件,元素 <PackageReference>
就會更新為最新的相容版本。 專案檔更新之後,即會執行 dotnet restore。
例如,將 Microsoft.EntityFrameworkCore
新增至 ToDo.csproj 會產生類似下例的輸出:
Determining projects to restore...
Writing C:\Users\username\AppData\Local\Temp\tmp24A8.tmp
info : Adding PackageReference for package 'Microsoft.EntityFrameworkCore' into project 'C:\ToDo\ToDo.csproj'.
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/index.json
info : GET https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/0.0.1-alpha/3.1.3.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/3.1.4/7.0.0-preview.2.22153.1.json
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore/page/7.0.0-preview.3.22175.1/7.0.0-preview.3.22175.1.json
info : NotFound https://pkgs.dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_packaging/516521bf-6417-457e-9a9c-0a4bdfde03e7/nuget/v3/registrations2-semver2/microsoft.entityframeworkcore/index.json 257ms
info : Restoring packages for C:\ToDo\ToDo.csproj...
info : Package 'Microsoft.EntityFrameworkCore' is compatible with all the specified frameworks in project 'C:\ToDo\ToDo.csproj'.
info : PackageReference for package 'Microsoft.EntityFrameworkCore' version '6.0.4' added to file 'C:\ToDo\ToDo.csproj'.
info : Writing assets file to disk. Path: C:\ToDo\obj\project.assets.json
log : Restored C:\ToDo\ToDo.csproj (in 171 ms).
ToDo.csproj 檔案現在會包含參考套件的 <PackageReference>
元素。
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
如果專案已上線至 中央套件管理 (CPM), 則 <PackageVersion>
中的 Directory.Packages.props file
元素會新增/更新,並將 <PackageReference>
專案新增至項目檔。
目前支援下列案例。 這些範例假設 的最新版本 Microsoft.EntityFrameworkCore
是 6.0.4。 此設計規格記載 了與 CPM 相關的其他案例。
案例 1: <PackageReference>
不存在於項目檔中, <PackageVersion>
元素不存在於 中 Directory.Packages.props file
,而且版本自變數不會從命令行傳遞。
執行的 CLI 命令: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
專案 <PackageVersion>
會加入至 Directory.Packages.props file
。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
專案 <PackageReference>
會新增至項目檔。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
案例 2: <PackageReference>
不存在於項目檔中, <PackageVersion>
專案不存在於 中 Directory.Packages.props file
,而且版本自變數會從命令行傳遞。
執行的 CLI 命令: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
專案 <PackageVersion>
會加入至 Directory.Packages.props file
。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
專案 <PackageReference>
會新增至項目檔。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
案例 3:<PackageReference>
不存在於項目檔中,項目確實存在於 中Directory.Packages.props file
,<PackageVersion>
而且版本自變數不會從命令行傳遞。
執行的 CLI 命令: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
專案 <PackageVersion>
會加入至 Directory.Packages.props file
。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
專案 <PackageReference>
會新增至項目檔。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
案例 4: <PackageReference>
不存在於項目檔中, <PackageVersion>
項目確實存在於 中 Directory.Packages.props file
,而且版本自變數會從命令行傳遞。
執行的 CLI 命令: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
專案 <PackageVersion>
會加入至 Directory.Packages.props file
。
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
專案 <PackageReference>
會新增至項目檔。
<PackageReference Include="Microsoft.EntityFrameworkCore" />
隱含還原
您不必執行 dotnet restore
,因為其會由需要進行還原的所有命令隱含執行,例如 dotnet new
、dotnet build
、dotnet run
、dotnet test
、dotnet publish
和 dotnet pack
。 若要停用隱含還原,請使用 --no-restore
選項。
dotnet restore
命令在適合進行明確還原的特定案例中仍可派上用場,例如 Azure DevOps Services 中的持續整合組建,或在需要明確控制何時進行還原的組建系統中。
如需了解如何管理 NuGet 摘要,請參閱 dotnet restore
文件。
引數
PROJECT
指定專案檔。 如果未指定,命令會在目前的目錄中搜尋一個專案檔。
PACKAGE_NAME
要新增的套件參考。
選項。
-f|--framework <FRAMEWORK>
只有在以特定架構為目標時,才能新增套件參考。
-?|-h|--help
列印如何使用命令的描述。
--interactive
可讓命令停止,並等候使用者輸入或進行動作。 例如完成驗證。
-n|--no-restore
新增套件參考,而不執行還原預覽和相容性檢查。
--package-directory <PACKAGE_DIRECTORY>
還原套件的目錄。 Windows 上的預設套件還原位置為
%userprofile%\.nuget\packages
,macOS 和 Linux 上則為~/.nuget/packages
。 如需詳細資訊,請參閱在 NuGet 中管理全域套件、快取和暫存資料夾。--prerelease
允許安裝發行前版本套件。 自 .NET Core 5 SDK 起提供使用
-s|--source <SOURCE>
在還原作業期間使用的 NuGet 套件來源 URI。
-v|--version <VERSION>
套件的版本。 請參閱 NuGet 套件版本控制 \(部分機器翻譯\)。
範例
將
Microsoft.EntityFrameworkCore
NuGet 套件新增至專案:dotnet add package Microsoft.EntityFrameworkCore
將特定版本的套件新增至專案:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
使用特定 NuGet 來源新增套件:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json