dotnet pack

Este artículo se aplica a: ✔️ SDK de .NET Core 3.1 y versiones posteriores

Name

dotnet pack: empaqueta el código en un paquete de NuGet.

Sinopsis

dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [--force] [--include-source] [--include-symbols] [--interactive]
    [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

Descripción

El comando dotnet pack compila el proyecto y crea paquetes de NuGet. El resultado de este comando es un paquete de NuGet (es decir, un archivo .nupkg).

Si quiere generar un paquete que contenga los símbolos de depuración, tiene dos opciones a su disposición:

  • --include-symbols: crea el paquete de símbolos.
  • --include-source: crea el paquete de símbolos con una carpeta src dentro que contiene los archivos de origen.

Las dependencias de NuGet del proyecto empaquetado se agregan al archivo .nuspec, por lo que se pueden resolver adecuadamente cuando se instala el paquete. Si el proyecto empaquetado tiene referencias a otros proyectos, estos no se incluyen en el paquete. Actualmente, debe disponer de un paquete por proyecto si tiene dependencias de proyecto a proyecto.

De forma predeterminada, dotnet pack compila primero el proyecto. Si desea evitar este comportamiento, pase la opción --no-build. Esta opción a menudo resulta útil en escenarios de compilación de integración continua (CI) donde se conoce el código que se compiló anteriormente.

Nota

En algunos casos, no se puede realizar la compilación implícita. Esto puede ocurrir cuando se establece GeneratePackageOnBuild, para evitar una dependencia cíclica entre los destinos de compilación y de paquete. La compilación también puede producir un error si hay un archivo bloqueado u otro problema.

Puede proporcionar propiedades de MSBuild en el comando dotnet pack para el proceso de empaquetado. Para obtener más información, vea pack y restore de NuGet como destinos de MSBuild y Referencia de la línea de comandos de MSBuild. La sección Ejemplos muestra cómo utilizar el modificador -p de MSBuild en un par de escenarios diferentes.

Nota

Los proyectos web no se pueden empaquetar.

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.

Este comando admite las opciones de dotnet restore cuando se pasan con el formato largo (por ejemplo, --source). No se admiten las opciones de formato corto, como -s.

Descargas de manifiestos de cargas de trabajo

Cuando se ejecuta, este comando inicia una descarga asincrónica en segundo plano de manifiestos de publicidad de cargas de trabajo. Si la descarga no ha terminado cuando finaliza el comando, se detiene. Para obtener más información, vea Manifiestos de publicidad.

Argumentos

PROJECT | SOLUTION

El archivo de proyecto o solución para empaquetar. Se trata de una ruta a un archivo .csproj, .vbproj o .fsproj, o a un archivo de solución o un directorio. Si no se especifica, el comando busca un archivo del proyecto o de la solución en el directorio actual.

Opciones

  • -c|--configuration <CONFIGURATION>

    Define la configuración de compilación. El valor predeterminado para la mayoría de los proyectos es Debug, pero puede invalidar los valores de configuración de compilación en el proyecto.

  • --force

    Fuerza la resolución de todas las dependencias, incluso si la última restauración se realizó correctamente. Especificar esta marca es lo mismo que eliminar el archivo project.assets.json.

  • -?|-h|--help

    Imprime una descripción de cómo usar el comando.

  • --include-source

    Incluye los paquetes NuGet de símbolos de depuración, además de los paquetes NuGet normales en el directorio de salida. Los archivos de origen se incluyen en la carpeta src dentro del paquete de símbolos.

  • --include-symbols

    Incluye los paquetes NuGet de símbolos de depuración, además de los paquetes NuGet normales en el directorio de salida.

  • --interactive

    Permite que el comando se detenga y espere una entrada o una acción del usuario. Por ejemplo, para completar la autenticación. Disponible desde el SDK de .NET Core 3.0.

  • --no-build

    No compila el proyecto antes de empaquetarlo. También establece la marca --no-restore de forma implícita.

  • --no-dependencies

    Omite las referencias de proyecto a proyecto y solo restaura el proyecto raíz.

  • --no-restore

    No ejecuta una restauración implícita al ejecutar el comando.

  • --nologo

    No se muestra la pancarta de inicio ni el mensaje de copyright.

  • -o|--output <OUTPUT_DIRECTORY>

    Coloca los paquetes compilados en el directorio especificado.

    • SDK de .NET 7.0.200

      En el SDK 7.0.200, si especifica la opción --output al ejecutar este comando en una solución, la CLI emitirá un error. Se trata de una regresión y se ha corregido en la versión 7.0.201 y posteriores del SDK de .NET.

  • --runtime <RUNTIME_IDENTIFIER>

    Especifica el tiempo de ejecución de destino para el que restaurar los paquetes. Para obtener una lista de identificadores de tiempo de ejecución (RID), consulte el catálogo de RID.

  • -s|--serviceable

    Establece la marca de servicio en el paquete. Para obtener más información, vea .NET Blog: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries (Blog de .NET: .NET Framework 4.5.1 admite actualizaciones de seguridad de Microsoft para bibliotecas NuGet de .NET).

  • --tl:[auto|on|off]

    Especifica si se debe usar el registrador de terminal para la salida de compilación. El valor predeterminado es auto, que primero comprueba el entorno antes de habilitar el registro de terminal. La comprobación del entorno comprueba que el terminal sea capaz de usar características de salida modernas y no usa una salida estándar redirigida antes de habilitar el nuevo registrador. La opción on omite la comprobación del entorno y habilita el registro de terminal. La opción off omite la comprobación del entorno y usa el registrador de consola predeterminado.

    El registrador de terminal muestra la fase de restauración seguida de la fase de compilación. Durante cada fase, los proyectos en compilación actuales aparecen en la parte inferior del terminal. Cada proyecto que se compila genera una salida del destino de MSBuild que se está compilando actualmente y la cantidad de tiempo invertido en ese destino. Puede buscar en esta información para obtener más información sobre la compilación. Cuando un proyecto termina de compilarse, se escribe una única sección "compilación completada" en la que se captura lo siguiente:

    • El nombre del proyecto compilado.
    • La plataforma de destino (si es de destino múltiple).
    • El estado de esa compilación.
    • La salida principal de esa compilación (con hipervínculo).
    • Los diagnósticos generados para ese proyecto.

    Esta opción está disponible a partir de .NET 8.

  • -v|--verbosity <LEVEL>

    Establece el nivel de detalle del comando. Los valores permitidos son q[uiet], m[inimal], n[ormal], d[etailed] y diag[nostic]. Para obtener más información, vea LoggerVerbosity.

  • --version-suffix <VERSION_SUFFIX>

    Define el valor de la propiedad VersionSuffix de MSBuild. El efecto de esta propiedad en la versión del paquete depende de los valores de las propiedades Version y VersionPrefix, como se muestra en la tabla siguiente:

    Propiedades con valores Versión del paquete
    None 1.0.0
    Version $(Version)
    Solo VersionPrefix $(VersionPrefix)
    Solo VersionSuffix 1.0.0-$(VersionSuffix)
    VersionPrefix y VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    Si quiere usar --version-suffix, especifique VersionPrefix y no Version en el archivo del proyecto. Por ejemplo, si VersionPrefix es 0.1.2 y pasa --version-suffix rc.1 a dotnet pack, la versión del paquete será 0.1.2-rc.1.

    Si Version tiene un valor y pasa --version-suffix a dotnet pack, se omite el valor especificado para --version-suffix.

Ejemplos

  • Empaquetado del proyecto en el directorio actual:

    dotnet pack
    
  • Empaquetar el proyecto app1:

    dotnet pack ~/projects/app1/project.csproj
    
  • Empaquetar el proyecto en el directorio actual y colocar los paquetes resultantes en la carpeta nupkgs:

    dotnet pack --output nupkgs
    
  • Empaquetar el proyecto en el directorio actual en la carpeta nupkgs y omitir del paso de compilación:

    dotnet pack --no-build --output nupkgs
    
  • Con el sufijo de la versión del proyecto configurado como <VersionSuffix>$(VersionSuffix)</VersionSuffix> en el archivo .csproj, empaquetar el proyecto actual y actualizar la versión del paquete resultante con el sufijo dado:

    dotnet pack --version-suffix "ci-1234"
    
  • Establecer la versión del paquete en 2.1.0 con la propiedad de MSBuild PackageVersion:

    dotnet pack -p:PackageVersion=2.1.0
    
  • Empaquete el proyecto para un determinado marco de destino:

    dotnet pack -p:TargetFrameworks=net45
    
  • Empaquete el proyecto y use un entorno de ejecución específico (Windows 10) para la operación de restauración:

    dotnet pack --runtime win10-x64
    
  • Empaquete el proyecto mediante un archivo .nuspec:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    Para obtener información sobre cómo usar NuspecFile, NuspecBasePath y NuspecProperties, vea los siguientes recursos: