共用方式為


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 newdotnet builddotnet rundotnet testdotnet publishdotnet 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
    

另請參閱