Librerías nativas
Algunas funciones de Crono dependen de binarios específicos del sistema operativo, como los motores de PDF e imagen (wkhtmltopdf y wkhtmltoimage). Para mantener el repositorio ligero y agnóstico de plataforma, estas dependencias nativas se descargan bajo demanda y se almacenan en una carpeta específica del runtime.
Administrador de librerías nativas
ILibreriaNativaAdministrador (Crono.Motor.TiempoEjecucion) busca en la carpeta runtimes/<rid>/native de la aplicación y devuelve un FileInfo para la librería o el ejecutable solicitado:
var administrador = servicios.Resolve<ILibreriaNativaAdministrador>();
var libreria = administrador.ObtenerLibreriaNativa("libsass", versionMin: "3.6");
var ejecutable = administrador.ObtenerEjecutableNativo("wkhtmltopdf");
Si el archivo falta o su versión queda fuera del rango solicitado, el administrador lo elimina para que se pueda instalar una copia nueva.
Instalación desde paquetes NuGet
El instalador (CrearInstaladorLibreria()) descarga un paquete NuGet con los binarios por plataforma y copia el archivo correcto en la carpeta del runtime. Los paquetes siguen la estructura runtimes/<rid>/native:
var administrador = servicios.Resolve<ILibreriaNativaAdministrador>();
var wkhtml = administrador.ObtenerEjecutableNativo("wkhtmltopdf");
if (!wkhtml.Exists)
{
using var instalador = administrador.CrearInstaladorLibreria();
// Instala desde el paquete correspondiente (por ejemplo, Crono.wkhtmltopdf.Nativo)
}
Empaquetado de los archivos nativos
Las librerías nativas se distribuyen como paquetes NuGet normales, con una carpeta native por cada RID:
Crono.wkhtmltopdf.Nativo.nupkg
└─ runtimes/
├─ win-x64/native/wkhtmltopdf.exe
├─ linux-x64/native/wkhtmltopdf
└─ osx-x64/native/wkhtmltopdf
Cuando el instalador se ejecuta, se copia el archivo apropiado al directorio runtimes/<rid>/native; las llamadas posteriores a ObtenerEjecutableNativo u ObtenerLibreriaNativa lo resuelven de inmediato sin más descargas.
Usos reales en Crono
Sobre esta infraestructura se apoyan:
WkHtmlAPdfConvertidor— genera los PDF (contratos, cronogramas, constancias) a partir de HTML.WkHtmlAImagenConvertidor/IImagenConvertidor— genera imágenes (PNG/JPG) de esos mismos documentos.
La instalación del binario nativo ocurre automáticamente en el primer uso, sin configuración manual, gracias a ILibreriaNativaAdministrador.