Inicio rápido
De cero a un proyecto restaurado, en tres comandos.
Este recorrido te lleva de un checkout limpio de un proyecto .NET a un workspace totalmente restaurado que PCPM puede gestionar, en tres comandos.
0. Suposiciones
- Tienes un proyecto o solución .NET en el directorio actual.
- PCPM está en tu
PATH(ver Instalación). - Estás en Windows, macOS o Linux con el SDK de .NET 10.
1. Inicializa o migra el workspace
Si ya tienes una solución:
pcpm convert
PCPM recorre cada .csproj, sube cada Version= por proyecto a un
<PackageVersion />, adopta tu Directory.Packages.props existente si
lo tienes y escribe pcpm.json + pcpm.lock. pcpm install se ejecuta
al final del convert. --dry-run previsualiza el diff; --revert
deshace un convert anterior.
Si partes de cero:
pcpm init
PCPM busca un .sln o .csproj en el directorio actual (o un nivel
arriba) y crea tres ficheros si no existen:
pcpm.json— el manifiesto propio de PCPM. Registra la ruta del store, las preferencias de comprobación de actualizaciones y los flags de funcionalidad. Rara vez lo editarás a mano.Directory.Packages.props— el fichero CPM de Microsoft. PCPM escribe aquí las entradas<PackageVersion />cuando ejecutaspcpm add.pcpm-workspace.yaml(solo para monorepos) — la configuración de descubrimiento de proyectos. No se crea para workspaces de un solo proyecto.
Si ya tienes Directory.Packages.props (es decir, ya usabas CPM), PCPM
lo adopta en lugar de sobrescribirlo.
Tip:
pcpm init --helplista todas las opciones. Las más útiles son--no-cpm(no tocarDirectory.Packages.props) y--force(sobrescribir ficheros existentes).
2. Añade tus dependencias
pcpm add Microsoft.Extensions.Hosting
pcpm add Serilog
pcpm add Serilog.Sinks.Console
pcpm add hace cuatro cosas:
- Consulta el feed por la última versión estable.
- Escribe la versión en
Directory.Packages.propscomo un<PackageVersion />. - Añade un
<PackageReference Include="…" />a cada.csprojque referencie al proyecto desde el que ejecutas. - Ejecuta
pcpm install(a menos que pases--no-install).
El install implícito es una funcionalidad, no un bug — para cuando
vuelves a tener el prompt, la nueva dependencia está en disco y lista
para usar.
3. Restaurar
Si te saltaste el install implícito en el paso 2, o si alguien acaba de
meter un cambio en pcpm.lock:
pcpm install
Este es el comando bestia. Hace lo siguiente:
- Resuelve el grafo transitivo completo.
- Descarga cada paquete faltante en el store global (o lo enlaza con hardlink desde el store si ya está).
- Hace hardlink de cada paquete desde el store a
~/.nuget/packages. - Ejecuta
dotnet restorecontra el layout materializado.
La primera ejecución descarga todo. Las siguientes son prácticamente
instantáneas — la mayoría de paquetes vienen del store y dotnet restore solo re-comprueba el lockfile.
4. Comprobación e inspección
pcpm list # imprime pcpm.lock formateado
pcpm why Serilog # quién trajo a Serilog
pcpm doctor # CPM, lockfile, CVEs, huérfanos
pcpm audit # vulnerabilidades + licencias + SBOM
pcpm listimprime el lockfile como tabla. Deberías ver tus dependencias directas, más su grafo transitivo, con las versiones resueltas.pcpm why Serilogmuestra la cadena de dependientes que trajoSerilogal lockfile. Útil cuando un bump transitivo te sorprende.pcpm doctorejecuta la batería completa de comprobaciones de CPM (ver Introducción). Conéctalo a tu CI.pcpm auditproduce un informe de vulnerabilidades, un informe de licencias y un SBOM en una sola pasada.
5. CI
Sustituye dotnet restore en tu build server por:
pcpm ci
pcpm ci valida que pcpm.lock esté sincronizado con el workspace,
que el sha256 de cada entrada esté presente en el store, y luego
ejecuta dotnet restore. Sale con código distinto de cero a la
primera inconsistencia — un run limpio de CI que resuelva un transitivo
nuevo se convierte en fallo de build, no en regresión silenciosa.
¿Qué sigue?
- Configuración del workspace — cómo PCPM
descubre tus proyectos y cuándo escribir un
pcpm-workspace.yaml. - Monorepos — compartir dependencias entre muchos proyectos en un repositorio.
- Integración con CI —
pcpm cien detalle. - Configuración — cada opción de
pcpm.json. - Migrar desde CPM — qué hace
pcpm convertpor dentro.