dotnet add package
Este artículo se aplica a: ✔️ SDK de .NET Core 3.1 y versiones posteriores
Nombre
dotnet add package
: agrega o actualiza una referencia de paquete en un archivo del proyecto.
Sinopsis
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
Descripción
El comando dotnet add package
es una opción práctica para agregar o actualizar una referencia de paquete en un archivo del proyecto. Al ejecutar el comando, se lleva a cabo una comprobación de compatibilidad para garantizar que el paquete es compatible con los marcos del proyecto. Si el resultado es positivo y no se hace referencia al paquete en el archivo del proyecto, se agrega un elemento <PackageReference>
al archivo. Si el resultado es positivo y ya se hace referencia al paquete en el archivo del proyecto, el elemento <PackageReference>
se actualiza a la última versión admitida. Tras actualizar el archivo del proyecto, se ejecuta dotnet restore.
Por ejemplo, si agrega Microsoft.EntityFrameworkCore
a ToDo.csproj se producirá un resultado similar al del siguiente ejemplo:
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).
El archivo ToDo.csproj contiene ahora un elemento <PackageReference>
para el paquete al que hace referencia.
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
Si el proyecto se incorpora a la administración central de paquetes (CPM), el <PackageVersion>
elemento de Directory.Packages.props file
se agrega o actualiza y el <PackageReference>
elemento se agrega al archivo del proyecto.
Actualmente se admiten los siguientes escenarios. En estos ejemplos se supone que la versión más reciente de Microsoft.EntityFrameworkCore
es 6.0.4. En esta especificación de diseño se documentan escenarios adicionales relacionados con CPM.
Escenario 1: <PackageReference>
no existe en el archivo del proyecto, <PackageVersion>
el elemento no existe en Directory.Packages.props file
y el argumento version no se pasa desde la línea de comandos.
Comando de la CLI que se ejecuta: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
El <PackageVersion>
elemento se agrega a .Directory.Packages.props file
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
El <PackageReference>
elemento se agrega al archivo del proyecto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Escenario 2: <PackageReference>
no existe en el archivo de proyecto, <PackageVersion>
el elemento no existe en Directory.Packages.props file
y el argumento version se pasa desde la línea de comandos.
Comando de la CLI que se ejecuta: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
El <PackageVersion>
elemento se agrega a .Directory.Packages.props file
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
El <PackageReference>
elemento se agrega al archivo del proyecto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Escenario 3: <PackageReference>
no existe en el archivo de proyecto, <PackageVersion>
el elemento existe en Directory.Packages.props file
y el argumento version no se pasa desde la línea de comandos.
Comando de la CLI que se ejecuta: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore
El <PackageVersion>
elemento se agrega a .Directory.Packages.props file
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
El <PackageReference>
elemento se agrega al archivo del proyecto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Escenario 4: <PackageReference>
no existe en el archivo de proyecto, <PackageVersion>
el elemento existe en Directory.Packages.props file
y el argumento version se pasa desde la línea de comandos.
Comando de la CLI que se ejecuta: dotnet add ToDo.csproj package Microsoft.EntityFrameworkCore --version 5.0.4
El <PackageVersion>
elemento se agrega a .Directory.Packages.props file
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="5.0.4" />
El <PackageReference>
elemento se agrega al archivo del proyecto.
<PackageReference Include="Microsoft.EntityFrameworkCore" />
Restauración implícita
No es necesario ejecutar dotnet restore
porque lo ejecutan implícitamente todos los comandos que necesitan que se produzca una restauración, como dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
y dotnet pack
. Para deshabilitar la restauración implícita, use la opción --no-restore
.
El comando dotnet restore
sigue siendo válido en algunos escenarios donde tiene sentido realizar una restauración explícita, como las compilaciones de integración continua en Azure DevOps Services o en los sistemas de compilación que necesitan controlar explícitamente cuándo se produce la restauración.
Para obtener información sobre cómo administrar fuentes de NuGet, vea la documentación de dotnet restore
.
Argumentos
PROJECT
Especifica el archivo del proyecto. Si no se especifica, el comando busca uno en el directorio actual.
PACKAGE_NAME
La referencia de paquete que se va a agregar.
Opciones
-f|--framework <FRAMEWORK>
Agrega una referencia de paquete solo cuando se destina a un marco específico.
-?|-h|--help
Imprime una descripción de cómo usar el comando.
--interactive
Permite que el comando se detenga y espere una entrada o una acción del usuario. Por ejemplo, para completar la autenticación.
-n|--no-restore
Agrega una referencia de paquete sin realizar una vista previa de restauración y una comprobación de compatibilidad.
--package-directory <PACKAGE_DIRECTORY>
Directorio donde quiere restaurar los paquetes. La ubicación predeterminada de restauración de paquetes es
%userprofile%\.nuget\packages
en Windows y~/.nuget/packages
en macOS y Linux. Para obtener más información, vea Administración de las carpetas de paquetes globales, de caché y temporales in NuGet.--prerelease
Permite que se instalen paquetes de versión preliminar. Disponible a partir del SDK de .NET Core 5.
-s|--source <SOURCE>
URI del origen del paquete NuGet que se usará durante la operación de restauración.
-v|--version <VERSION>
Versión del paquete. Consulte NuGet package versioning (Control de versiones de paquetes NuGet).
Ejemplos
Agregar un paquete de NuGet
Microsoft.EntityFrameworkCore
a un proyecto:dotnet add package Microsoft.EntityFrameworkCore
Agregar una versión específica de un paquete a un proyecto:
dotnet add ToDo.csproj package Microsoft.Azure.DocumentDB.Core -v 1.0.0
Agregar un paquete con un origen de NuGet específico:
dotnet add package Microsoft.AspNetCore.StaticFiles -s https://dotnet.myget.org/F/dotnet-core/api/v3/index.json