Despliegue de módulos
Desplegar un módulo consiste en llevar su ensamblado compilado y sus recursos (vistas, wwwroot, modulo.json, Localizacion/) a la carpeta de módulos de la aplicación, para que el catálogo de módulos lo descubra al arrancar y quede disponible para instalarse desde el backend.
Compilar en modo Release
Los módulos se compilan en configuración Release junto con la solución. El repositorio incluye los scripts de compilación en la raíz:
# Windows
build.cmd
# Linux / macOS
./build.sh
La salida de la compilación se deposita en la carpeta artifacts/ del repositorio, con cada módulo en su subcarpeta lista para copiarse. En una publicación completa del sitio, los módulos quedan bajo la carpeta de módulos de la aplicación desplegada.
Estructura de un módulo desplegado
Un módulo desplegado conserva su estructura mínima:
Modulos/Crono.Facturacion/
├── Crono.Facturacion.dll
├── modulo.json
├── Views/ (vistas Razor, precompiladas o no)
├── Localizacion/ (recursos.{cultura}.xml)
└── wwwroot/ (css, js, imágenes del módulo)
El modulo.json es imprescindible: sin él, el catálogo no reconoce la carpeta como un módulo.
Instalación desde el backend
Una vez que la carpeta del módulo está presente y la aplicación arranca, el módulo aparece en el Administrador de módulos del backend. Desde ahí un administrador lo instala, lo que dispara su InstalarAsync (siembra de configuración y recursos de idioma, ver Primeros pasos). Al desinstalarlo se ejecuta DesinstalarAsync, que limpia lo que el módulo sembró.
Copiar la carpeta de un módulo y reiniciar la aplicación basta para que Crono lo descubra. Compilar en Release y precompilar las vistas del módulo reduce el tiempo del primer arranque (ver Precompilación de vistas).
Dependencias y referencias privadas
Si el módulo referencia paquetes NuGet que no provee el núcleo, deben declararse en ReferenciasPrivadas del modulo.json para que se copien a la carpeta de salida del módulo (incluida toda la cadena de dependencias). Los paquetes que el núcleo ya referencia no se duplican. Si el módulo depende de otro módulo, se declara en DependeDe con el NombreSistema correspondiente, de modo que el orden de carga e instalación lo respete.
Versionado y compatibilidad
Versionidentifica la versión del módulo y se muestra en el backend.VersionMinimaAppimpide instalar el módulo en versiones de Crono anteriores a la indicada.
Mantén ambos campos al día en cada release del módulo para que las actualizaciones y las comprobaciones de compatibilidad funcionen correctamente.