Skip to main content

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.