Ir al contenido

Ejecutar el proyecto (F5)

Pulsa F5 y Context Code arranca tu proyecto. No una lista de cosas compilables: una configuración concreta, la que hayas marcado como proyecto de inicio, igual que en Visual Studio.

Al abrir un proyecto, la app recorre sus carpetas (hasta tres niveles, saltándose node_modules, target, dist, build, .git…) y deduce todo lo que se puede ejecutar:

Pista en el discoConfiguración que se ofrece
*.slnuna por cada proyecto ejecutable de la solución (OutputType Exe o SDK Web/Worker)
*.csproj / *.fsproj / *.vbprojdotnet run --project …
package.json con dev, start o servepnpm/npm/yarn/bun run <script> (el gestor se decide por el lockfile más cercano)
src-tauri/tauri.conf.jsontauri dev
angular.json / ionic.config.jsonng serve / ionic serve
vite.config.* sin script devvite
Cargo.tomlcargo run, o un cargo run --bin <bin> por cada binario
manage.py, main.py, app.py, pyproject.tomlmanage.py runserver, python <archivo>, python -m uvicorn main:app --reload, python -m <módulo>
go.modgo run . y un go run ./cmd/<x> por cada cmd/*
pom.xml / build.gradlemvn spring-boot:run (o exec:java), gradlew bootRun (o run)
pubspec.yamlflutter run
.vscode/launch.jsonlas entradas launch de tipo node, coreclr, python o go, traducidas a comando

En un ERP con veinte proyectos la lista tiene que leerse de un vistazo, así que cada configuración es una sola línea:

[C#] Security · [Node] Mobile start · [Ionic] Mobile ionic serve

  • El icono del lenguaje —el mismo del árbol de archivos: C#, TypeScript, Angular, Ionic, Node, Gradle, Maven, Rust, Python, Go, Dart, Tauri— sustituye al viejo chip de texto («DOTNET», «ANGULAR»). El tipo exacto está en su tooltip.
  • El nombre corto es solo el proyecto: ApiGateway, Security, Frontend, Mobile, android. Nunca «Security · dotnet run · Security».
  • El verbo (atenuado, a la derecha) sale solo si hace falta distinguir: si en Mobile hay tres formas de arrancar verás start, ng serve e ionic serve; si un proyecto .NET es único en su solución, no se repite «dotnet run» en seis filas.
  • El comando completo, la carpeta y el archivo de origen ya no ocupan la lista: están en el tooltip de la fila y en el panel de detalle del selector, que sigue a la fila resaltada — «Comando: dotnet run --project Security.csproj · Carpeta: Backend/Security · Solución: Backend/AspidaERP.sln».

Los encabezados son la unidad real del proyecto, con su icono y el número de configuraciones:

  • .NET agrupa por .sln: la app lee las líneas Project(…) = "…", "ruta.csproj" de cada solución, así que los seis servicios de AspidaERP.sln van juntos aunque vivan en seis carpetas. Cuando un .csproj aparece en dos soluciones (una anidada), gana la más externa. Lo que no está en ninguna cae en «Sin solución».
  • Node / Angular / Ionic / Tauri y Rust agrupan por el manifiesto raíz (package.json, Cargo.toml), no por el paquete suelto. Gradle agrupa por el settings.gradle más externo, que es la raíz real del proyecto Android.
  • Los grupos se pliegan, y lo que dejes plegado se recuerda por proyecto.
  • Lo poco útil se esconde por defecto tras «Mostrar todo (N)»: proyectos de pruebas, carpetas e2e, el gradle run de capacitor-cordova-android-plugins, bin, obj.

El botón ▶ de la barra del modo IDE muestra el icono y el nombre corto del proyecto de inicio (▶ Security), y F5 lo ejecuta.

  • Si solo hay una configuración, esa es el proyecto de inicio y F5 la lanza sin preguntar.
  • Si hay varias y todavía no has elegido, F5 abre el selector: la lista agrupada por solución o paquete, con buscador y la casilla «Establecer como proyecto de inicio» (marcada por defecto). Al aceptar, se ejecuta y queda fijada; las siguientes veces F5 va directo.
  • El desplegable de al lado del ▶ cambia el proyecto de inicio en cualquier momento. Usa las mismas filas compactas (icono + nombre corto, con el ✓ en el de inicio) y ofrece Volver a detectar, Elegir proyecto de inicio… y Editar configuraciones….

La elección se guarda por proyecto, en .context/run.json. Cambiar de proyecto de inicio no toca nada más.

AtajoQué hace
F5ejecuta el proyecto de inicio. Si ya está corriendo no lo duplica: enfoca su pestaña de salida
Mayús+F5detiene todo lo que esté en ejecución
Ctrl+F5abre el selector para ejecutar otra configuración sin cambiar el proyecto de inicio (aquí no hay depurador, así que este es el equivalente útil de «Iniciar sin depurar»)
Ctrl+Mayús+Bcompilar los targets de build, que es lo que antes se disparaba con F5

La ejecución va al panel Salida del proyecto, con una pestaña por configuración en marcha. Cada pestaña tiene ⏹ detener, ↺ reiniciar, 🗑 limpiar, y cierra con ✕ cuando el proceso ya terminó. El punto de color dice si sigue viva (verde), acabó bien (gris) o falló (rojo).

La pestaña Problemas analiza esa misma salida y saca los archivo:línea:columna de los formatos habituales (rustc, tsc, gcc/clang, webpack): un vite dev o un cargo run que fallan al compilar se leen ahí, sin rebuscar en el log.

En el desplegable del ▶ está «Preguntar siempre qué ejecutar» (apagado por defecto). Con esto activo, F5 abre el selector cada vez, aunque haya proyecto de inicio. Útil cuando trabajas a la vez en dos servicios del mismo monorepo.

Editar configuraciones… abre .context/run.json en el editor, creándolo si no existía. El archivo admite comentarios (//) y comas finales, y su cabecera documenta el formato:

{
"proyectoDeInicio": "node:apps/web:pnpm-run-dev",
"preguntarSiempre": false,
"configuraciones": [
{
"id": "api-local",
"nombre": "API (local)",
"cwd": "servicios/api",
"comando": "node",
"args": ["server.js"],
"env": { "PORT": "3001" }
}
]
}
  • proyectoDeInicio — el id de la configuración que arranca con F5.
  • preguntarSiempre — true hace que F5 abra siempre el selector.
  • configuraciones — las tuyas, que se suman a las detectadas (aparecen marcadas como manual). De cada una solo id y comando son obligatorios: nombre cae en el id, cwd en la raíz del proyecto y tipo en custom.
  • cwd es relativo a la raíz del proyecto ("." es la raíz) y args va ya separado, sin comillas de shell.

Una entrada mal escrita se descarta sola: el resto del archivo —y tu proyecto de inicio— siguen funcionando.