Comparteix a través de


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 filey 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 filey 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 filey 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 filey 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
    

Vea también