Compartir por


dotnet pack

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

Nombre

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

Sinopsis

dotnet pack [<PROJECT>|<SOLUTION>]
  [--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
  [--disable-build-servers] [--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

Description

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

Si desea generar un paquete que contenga los símbolos de depuración, tiene dos opciones disponibles:

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

Las dependencias de NuGet del proyecto empaquetado se agregan al archivo .nuspec , por lo que se resuelven correctamente cuando se instala el paquete. Si el proyecto empaquetado tiene referencias a otros proyectos, los demás proyectos no se incluyen en el paquete. Actualmente, debe tener 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 --no-build opción . Esta opción suele ser útil en escenarios de compilación de integración continua (CI) en los que sabe que el código se creó anteriormente.

Nota:

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

Puede proporcionar propiedades de MSBuild al dotnet pack comando para el proceso de empaquetado. Para obtener más información, consulte Propiedades de destino del paquete NuGet y referencia de msBuild Command-Line. En la sección Ejemplos se muestra cómo usar el modificador de MSBuild -p para 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.

Arguments

PROJECT | SOLUTION

Proyecto o solución que se va a empaquetar. Es una ruta de acceso a un archivo csproj, vbproj o fsproj, o a un archivo o directorio de solución. Si no se especifica, el comando busca en el directorio actual un archivo de proyecto o solución.

Options

  • --artifacts-path <ARTIFACTS_DIR>

    Todos los archivos de salida de compilación del comando ejecutado se incluirán en subcarpetas en la ruta de acceso especificada, separadas por el proyecto. Para obtener más información, vea diseño de salida de artefactos . Disponible desde el SDK de .NET 8.

  • -c|--configuration <CONFIGURATION>

    Define la configuración de compilación. Si está desarrollando con el SDK de .NET 8 o una versión posterior, el comando usa la configuración de Release de forma predeterminada para los proyectos cuyo TargetFramework está establecido en net8.0 o una versión posterior. La configuración de compilación predeterminada es Debug para versiones anteriores del SDK y para marcos de destino anteriores. Puede invalidar el valor predeterminado en la configuración del proyecto o mediante esta opción. Para obtener más información, vea "dotnet publish" usa la configuración de versión y "dotnet pack" usa la configuración de versión.

  • --disable-build-servers

    Obliga al comando a omitir los servidores de compilación persistentes. Esta opción proporciona una manera coherente de deshabilitar todo el uso del almacenamiento en caché de compilación, lo que fuerza una compilación desde cero. Una compilación que no se basa en memorias caché es útil cuando las memorias caché están dañadas o tienen un estado incorrecto por algún motivo. Disponible a partir del SDK de .NET 7.

  • --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.

  • --include-source

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

  • --include-symbols

    Incluye los símbolos de depuración paquetes NuGet 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.

  • --no-build

    No compila el proyecto antes de empaquetar. 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 muestra el banner de inicio ni el mensaje de copyright.

  • -o|--output <OUTPUT_DIRECTORY>

    Coloca los paquetes integrados en el directorio especificado.

    • SDK de .NET 7.0.200

      En el SDK 7.0.200, si especifica la --output opción al ejecutar este comando en una solución, la CLI emitirá un error. Se trata de una regresión y se corrigió en la versión 7.0.201 y versiones 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 que se puede usar en el paquete. Para obtener más información, vea 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 el registrador de terminal debe usarse 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.

    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, consulte LoggerVerbosity.

  • --version-suffix <VERSION_SUFFIX>

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

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

    Si desea 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 se pasa --version-suffix a dotnet pack, se omite el valor especificado para --version-suffix .

  • -?|-h|--help

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

Examples

  • Empaquetar el proyecto en el directorio actual:

    dotnet pack
    
  • Empaquetar el app1 proyecto:

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

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

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

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

    dotnet pack -p:PackageVersion=2.1.0
    
  • Empaquetar el proyecto para una plataforma de destino específica:

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

    dotnet pack --runtime win-x64
    
  • Empaquetar 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, NuspecBasePathy NuspecProperties, vea los siguientes recursos: