dotnet pack
Este artículo se aplica a: ✔️ SDK de .NET Core 2.x y versiones posteriores
NOMBRE
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] [-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 carpetasrcdentro 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.
Los proyectos web no están empaquetados de forma predeterminada. Para invalidar el comportamiento predeterminado, agregue la siguiente propiedad a su archivo .csproj:
<PropertyGroup>
<IsPackable>true</IsPackable>
</PropertyGroup>
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.
--forceFuerza 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|--helpImprime una descripción de cómo usar el comando.
--include-sourceIncluye 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
srcdentro del paquete de símbolos.--include-symbolsIncluye los paquetes NuGet de símbolos de depuración, además de los paquetes NuGet normales en el directorio de salida.
--interactivePermite 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-buildNo compila el proyecto antes de empaquetarlo. También establece la marca
--no-restorede forma implícita.--no-dependenciesOmite las referencias de proyecto a proyecto y solo restaura el proyecto raíz.
--no-restoreNo ejecuta una restauración implícita al ejecutar el comando.
--nologoNo se muestra la pancarta de inicio ni el mensaje de copyright. Disponible desde el SDK de .NET Core 3.0.
-o|--output <OUTPUT_DIRECTORY>Coloca los paquetes compilados en el directorio especificado.
--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|--serviceableEstablece 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).
-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
VersionSuffixde MSBuild. El efecto de esta propiedad en la versión del paquete depende de los valores de las propiedadesVersionyVersionPrefix, como se muestra en la tabla siguiente:Propiedades con valores Versión del paquete None 1.0.0Version$(Version)Solo VersionPrefix$(VersionPrefix)Solo VersionSuffix1.0.0-$(VersionSuffix)VersionPrefixyVersionSuffix$(VersionPrefix)-$(VersionSuffix)Si quiere usar
--version-suffix, especifiqueVersionPrefixy noVersionen el archivo del proyecto. Por ejemplo, siVersionPrefixes0.1.2y pasa--version-suffix rc.1adotnet pack, la versión del paquete será0.1.2-rc.1.Si
Versiontiene un valor y pasa--version-suffixadotnet pack, se omite el valor especificado para--version-suffix.
Ejemplos
Empaquetado del proyecto en el directorio actual:
dotnet packEmpaquetar el proyecto
app1:dotnet pack ~/projects/app1/project.csprojEmpaquetar el proyecto en el directorio actual y colocar los paquetes resultantes en la carpeta
nupkgs:dotnet pack --output nupkgsEmpaquetar el proyecto en el directorio actual en la carpeta
nupkgsy omitir del paso de compilación:dotnet pack --no-build --output nupkgsCon 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.0con la propiedad de MSBuildPackageVersion:dotnet pack -p:PackageVersion=2.1.0Empaquete el proyecto para un determinado marco de destino:
dotnet pack -p:TargetFrameworks=net45Empaquete el proyecto y use un entorno de ejecución específico (Windows 10) para la operación de restauración:
dotnet pack --runtime win10-x64Empaquete el proyecto mediante un archivo .nuspec:
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetPara obtener información sobre cómo usar
NuspecFile,NuspecBasePathyNuspecProperties, vea los siguientes recursos: