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>
项目文件中不存在, <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" />
方案 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
中,或在需要显式控制还原发生时间的生成系统中,dotnet restore
命令仍然有用。
有关如何使用 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