es

pcpm install

Resolver, materializar, hardlink, restaurar.

pcpm install es el comando bestia. Se ejecuta tras cada cambio en el workspace y es el comando adecuado al que recurrir en la duda.

pcpm install [options]

Qué hace

  1. Lee Directory.Packages.props y cada .csproj en el workspace. Construye la unión de dependencias directas.
  2. Resuelve el grafo transitivo con el algoritmo descrito en Resolución de dependencias. BFS puro con unión de restricciones.
  3. Para cada paquete resuelto, consulta el feed y descarga el .nupkg (si no está ya en el store).
  4. Hashea el paquete, lo mueve al store direccionable por contenido bajo su SHA-256.
  5. Hace hardlink del árbol extraído del paquete desde el store a ~/.nuget/packages/<id>/<version>/.
  6. Actualiza pcpm.lock con el grafo resuelto y los hashes de contenido.
  7. Ejecuta dotnet restore contra el layout materializado.

Opciones

FlagEfecto
--frozenNo actualiza pcpm.lock; falla si está desactualizado.
--no-restoreSalta el paso de dotnet restore al final.
--no-hardlinkCopia en lugar de hardlink (útil para depurar).
--parallel <n>Número de descargas concurrentes del feed. Por defecto: 8.
--offlineNo accede a la red. Falla si el store no tiene algo.
--forceRe-resuelve y reescribe pcpm.lock aunque parezca actual.

Ejemplos

# El comando del día a día — restauración caliente
pcpm install

# Instalación fría (sin red)
pcpm install --offline

# Build de CI que no necesita dotnet restore al final
pcpm install --no-restore

Rendimiento

La primera ejecución de pcpm install contra un store limpio descarga cada paquete y lo hashea. Las ejecuciones siguientes están acotadas por:

  • Consultas al feed (una petición HTTP por paquete, pero con caché).
  • Creación de hardlinks (microsegundos por paquete).
  • dotnet restore (sin cambios respecto a un flujo sin PCPM).

En una solución de 50 proyectos con 200 paquetes únicos:

EscenarioTiempo
Frío (store vacío)30-60s
Caliente (todo en caché)2-4s
Caliente + cambio pequeño2-3s

El caso “caliente” es lo que obtiene CI cuando el store se cachea entre ejecuciones. Ver Integración con CI para la configuración de la caché.

Códigos de salida

pcpm install sale con:

  • 0 en éxito.
  • 1 en conflicto de resolución (ver Resolución de dependencias).
  • 3 en error de red (feed inaccesible).
  • 4 en error de validación del lockfile (solo con --frozen).

Véase también