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>] [--artifacts-path <ARTIFACTS_DIR>]
[-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 carpetasrc
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
--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, consulte Diseño de salida de artefactos. Disponible a partir del 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
Release
configuración de forma predeterminada para los proyectos cuyo TargetFramework está establecidonet8.0
en o una versión posterior. La configuración de compilación predeterminada esDebug
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.
--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ónon
omite la comprobación del entorno y habilita el registro de terminal. La opciónoff
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]
ydiag[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 propiedadesVersion
yVersionPrefix
, 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
yVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Si quiere usar
--version-suffix
, especifiqueVersionPrefix
y noVersion
en el archivo del proyecto. Por ejemplo, siVersionPrefix
es0.1.2
y pasa--version-suffix rc.1
adotnet pack
, la versión del paquete será0.1.2-rc.1
.Si
Version
tiene un valor y pasa--version-suffix
adotnet 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 MSBuildPackageVersion
:dotnet pack -p:PackageVersion=2.1.0
Empaquete el proyecto para un determinado marco de destino:
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
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
yNuspecProperties
, vea los siguientes recursos: