¿Qué es el formato de archivo NUPKG?
Un archivo .nupkg almacena un paquete NuGet estandarizado que se utiliza para distribuir bibliotecas, herramientas o componentes de aplicaciones .NET. Internamente, .nupkg es un archivo ZIP estructurado según las Open Packaging Conventions (OPC) -la misma familia de contenedores que .docx- y contiene ensamblados .dll compilados, un manifiesto de metadatos .nuspec, un descriptor [Content_Types].xml y carpetas lib/ que organizan los ensamblados por el moniker del framework de destino (por ejemplo, net8.0, netstandard2.0).
¿Qué es NuGet?
NuGet es el gestor de paquetes para la plataforma de desarrollo Microsoft .NET, actualmente administrado por la .NET Foundation. Se incluye por defecto con Visual Studio desde el lanzamiento de Visual Studio 2012 y también está disponible como una CLI independiente. NuGet es compatible con .NET Framework, .NET Standard y todas las versiones modernas de .NET.
¿Cómo se generan los archivos .nupkg?
Los paquetes NuGet pueden generarse desde una carpeta de proyecto utilizando el comando dotnet pack (el enfoque multiplataforma moderno) o la CLI heredada nuget pack. Al usar dotnet pack, los metadatos del paquete se leen directamente del archivo de proyecto .csproj, por lo que ya no se requiere un manifiesto .nuspec independiente, aunque se puede seguir proporcionando uno para escenarios avanzados. El resultado es un archivo .nupkg listo para su distribución.
¿Cómo compartir un paquete NuGet?
La forma más popular de compartir archivos .nupkg es publicándolos en la plataforma web nuget.org. Tras registrar una cuenta, los usuarios suben su archivo .nupkg y proporcionan una breve descripción; cada paquete se somete a una validación automática antes de ser indexado y puesto a disposición para su descarga. Los feeds privados alojados en Azure Artifacts, GitHub Packages o servidores autoalojados también son comunes en entornos empresariales. Los paquetes de símbolos complementarios .snupkg pueden publicarse junto con un .nupkg para permitir la depuración paso a paso del código fuente.
Seguridad y protección
RIESGO: MEDIUMUn .nupkg son datos, no es directamente ejecutable, pero instalar un paquete ejecuta su código en su compilación y aplicaciones, por lo que el riesgo en la cadena de suministro es real: se han utilizado paquetes maliciosos o con nombres similares (typosquatting) en nuget.org para enviar malware, y las herramientas, scripts de instalación o destinos de MSBuild de un paquete pueden ejecutarse durante la restauración o compilación. Instale paquetes solo de autores de confianza, esté atento a IDs con errores tipográficos, prefiera paquetes con muchas descargas y enlaces al código fuente, y considere el uso de paquetes firmados y archivos de bloqueo. La mera inspección de un .nupkg descomprimiéndolo es segura; el riesgo proviene de instalarlo y compilar contra él.
Detalles del formato
en pocas palabrasProgramas que abren archivos NUPKG
Detalles técnicos
especificación profunda| Formato de contenedor | ZIP (Open Packaging Conventions / OPC) - misma familia de contenedores que .docx y .xlsx |
| Bytes mágicos | `50 4B 03 04` («PK») - cabecera de archivo local ZIP estándar en el desplazamiento 0 |
| Tipo MIME | `application/octet-stream` |
| Manifiesto interno | Archivo XML `.nuspec` en la raíz del paquete; declara Id, Versión, Autores, dependencias y frameworks de destino |
| Estructura OPC requerida | `[Content_Types].xml`, carpeta `_rels/` y al menos un manifiesto `.nuspec` |
| Convención de ruta de ensamblados | Carpetas `lib/<TFM>/` - p. ej. `lib/net8.0/`, `lib/netstandard2.0/` - una por cada moniker de framework de destino |
| Herramientas de compilación | `dotnet pack` (proyectos estilo SDK, multiplataforma) o `nuget pack` (CLI de NuGet heredada) |
| Registro público | nuget.org - más de 500 000 IDs de paquetes únicos; los paquetes pasan una validación automatizada antes de ser indexados |
| Formato de símbolos complementario | `.snupkg` - archivo independiente que contiene archivos de símbolos `.pdb` para depuración a nivel de código fuente |
| Firma de paquetes | Firmas de certificado X.509 (autor y repositorio); los clientes verifican las firmas al instalar |
| Soporte de frameworks de destino | .NET Framework, .NET Standard, .NET 5-9 y posteriores; soporte multi-target en un solo `.nupkg` |
| Esquema de versiones | Semantic Versioning 2.0 (SemVer 2.0); soporte para etiquetas de pre-lanzamiento (p. ej. `-alpha`, `-rc.1`) |
| Ubicación de la caché de paquetes | `%USERPROFILE%\.nuget\packages\` en Windows; `~/.nuget/packages/` en Linux y macOS |
| Resolución de dependencias | Grafo de dependencias transitivas completo resuelto en `dotnet restore`; archivo de bloqueo opcional `packages.lock.json` para compilaciones reproducibles |
| Lanzado | 2010 (NuGet 1.0) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | learn.microsoft.com |
Conversiones de NUPKG
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos NUPKG.