Comando pack (CLI de NuGet)
Se aplica a: creación de paquetes • Versiones compatibles: 2.7 y posteriores
Crea un paquete NuGet basado en el archivo de proyecto o .nuspec especificado. El comando dotnet pack
(consulta Comandos de dotnet) y msbuild -t:pack
(consulta Destinos de MSBuild) se pueden usar como alternativas.
Importante
Usa dotnet pack
o msbuild -t:pack
para proyectos basados en PackageReference. A partir de la versión 6.5 y posteriores de NuGet, el comando pack producirá un error al intentar empaquetar estos tipos de proyecto. Las versiones anteriores intentarían empaquetar, pero es posible que el paquete generado no sea correcto.
En Mono, no se admite la creación de un paquete a partir de un archivo de proyecto. También debes ajustar rutas de acceso no locales en el archivo .nuspec
a rutas de acceso de estilo Unix, ya que nuget.exe no convierte los nombres de ruta de acceso de Windows por sí mismo.
Uso
nuget pack <nuspecPath | projectPath> [options] [-Properties ...]
donde <nuspecPath>
y <projectPath>
especifican el archivo .nuspec
o el archivo de proyecto, respectivamente.
Opciones
-BasePath
Define la ruta de acceso base de los archivos definidos en el archivo .nuspec.
-Build
Especifica que el proyecto debería compilarse antes de compilar el paquete.
-ConfigFile
El archivo de configuración de NuGet que aplicar. Si no se especifica, se usa
%AppData%\NuGet\NuGet.Config
(Windows) o~/.nuget/NuGet/NuGet.Config
o~/.config/NuGet/NuGet.Config
(Mac/Linux).-Exclude
Especifica uno o varios patrones de caracteres comodín que se excluirán al crear un paquete. Para especificar más de un patrón, repite la marca -Exclude. Vea el ejemplo siguiente.
-ExcludeEmptyDirectories
Impide la inclusión de directorios vacíos al compilar el paquete.
-ForceEnglishOutput
(3.5 y posteriores) Fuerza la ejecución de nuget.exe mediante una referencia cultural en inglés invariable.
-?|-help
Muestra información de ayuda para el comando.
-IncludeReferencedProjects
Indica que el paquete compilado debe incluir proyectos a los que se hace referencia como dependencias o como parte del paquete. Si un proyecto al que se hace referencia tiene un archivo
.nuspec
correspondiente con el mismo nombre que el proyecto, ese proyecto al que se hace referencia se agrega como una dependencia. De lo contrario, el proyecto al que se hace referencia se agrega como parte del paquete.-InstallPackageToOutputPath
Especifica si el comando debería preparar el directorio de salida del paquete para admitir el recurso compartido como feed.
-MinClientVersion
Establece el atributo minClientVersion para el paquete creado. Este valor invalidará el valor del atributo minClientVersion existente (si hay alguno) en el archivo
.nuspec
.-MSBuildPath
(4.0 y posteriores) Especifica la ruta de acceso de MSBuild que se va a usar con el comando; prevalecerá sobre
-MSBuildVersion
.-MSBuildVersion
(3.2 y posteriores) Especifica la versión de MSBuild que se va a usar con este comando. Los valores admitidos son 4, 12, 14, 15.1, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9. De manera predeterminada, se selecciona MSBuild en la ruta de acceso; de lo contrario, el valor predeterminado es la versión instalada más alta de MSBuild.
-NoDefaultExcludes
Impide la exclusión predeterminada de archivos y carpetas de paquetes NuGet a partir de un punto, como
.svn
y.gitignore
.-NonInteractive
Suprime solicitudes de confirmaciones o de entrada de usuario.
-NoPackageAnalysis
Especifica que el paquete no debe ejecutar el análisis de paquetes después de crear el paquete.
-OutputDirectory
Especifica la carpeta en la que se almacena el paquete creado. Si no se especifica, se usa la carpeta actual.
-OutputFileNamesWithoutVersion
Especifica si el comando debería preparar el nombre de salida del paquete sin la versión.
-PackagesDirectory
Especifica la carpeta packages.
-p|-Properties
Debería aparecer la última en la línea de comandos después de otras opciones. Especifica una lista de propiedades que invalidan los valores en el archivo del proyecto; consulta los nombres de las propiedades en Propiedades comunes de proyectos de MSBuild. El argumento Properties aquí es una lista de pares “token = valor”, separados por punto y coma, donde cada entrada de
$token$
en el archivo.nuspec
se reemplazará por el valor dado. Los valores pueden ser cadenas entre comillas. Ten en cuenta que para la propiedad “Configuration”, el valor predeterminado es “Debug”. Para cambiar a una configuración de versión, usa-Properties Configuration=Release
. En general, las propiedades deberían ser las mismas que se usaron durante la compilación del proyecto correspondiente, con el fin de evitar un comportamiento potencialmente extraño.-SolutionDirectory
Especifica el directorio de la solución.
-Suffix
(3.4.4 y versiones posteriores) Anexa un sufijo al número de versión generado internamente, que suele usarse para anexar la compilación u otros identificadores de versión preliminar. Por ejemplo, el uso de
-suffix nightly
creará un paquete con un número de versión como1.2.3-nightly
. Los sufijos deben comenzar por una letra para evitar advertencias, errores y posibles incompatibilidades con diferentes versiones de NuGet y el Administrador de paquetes de NuGet.-SymbolPackageFormat
Al crear un paquete de símbolos, permite elegir entre el formato
snupkg
ysymbols.nupkg
.-Symbols
Especifica que el paquete contiene orígenes y símbolos. Cuando se usa con un archivo
.nuspec
, se crea un archivo de paquete NuGet normal y el paquete de símbolos correspondiente. De manera predeterminada, crea un paquete de símbolos heredado. El nuevo formato recomendado para paquetes de símbolos es .snupkg. Vea Crear paquetes de símbolos (.snupkg).-Tool
Especifica que los archivos de salida del proyecto deben colocarse en la carpeta
tools
dentro del paquete.-Verbosity [normal|quiet|detailed]
Especifica la cantidad de detalles que se muestran en la salida:
normal
(el valor predeterminado),quiet
odetailed
.-Version
Invalida el número de versión del archivo
.nuspec
.
Consulta también Variables de entorno
Exclusión de dependencias de desarrollo
Algunos paquetes de NuGet son útiles como dependencias de desarrollo, que ayudan a crear tu propia biblioteca, pero no tienen por qué ser necesarios como dependencias de paquetes reales.
El comando pack
omitirá las entradas de package
en packages.config
que tienen el atributo developmentDependency
establecido como true
. Estas entradas no se incluirán como dependencias en el paquete creado.
Por ejemplo, considera el siguiente archivo packages.config
en el proyecto de origen:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="jQuery" version="1.5.2" />
<package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
<package id="microsoft-web-helpers" version="1.15" />
</packages>
Para este proyecto, el paquete creado por nuget pack
tendrá una dependencia en jQuery
y microsoft-web-helpers
, pero no en netfx-Guard
.
Supresión de advertencias de paquete
Aunque se recomienda resolver todas las advertencias de NuGet durante las operaciones de paquete, en determinadas situaciones la supresión está garantizada.
Puedes conseguir esto del siguiente modo:
nuget.exe pack package.nuspec -Properties NoWarn=NU5104
Ejemplos
nuget pack
nuget pack foo.nuspec
nuget pack foo.csproj
nuget pack foo.csproj -Properties Configuration=Release
nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5"
# Create a package from project foo.csproj, using MSBuild version 12 to build the project
nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5"
# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg
nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg
nuget pack foo.nuspec -Version 2.1.0
nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5
nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat"
Nota:
No se admite el comando pack
para proyectos de estilo SDK; utiliza dotnet pack
o msbuild -t:pack
para empaquetar estos proyectos en su lugar.