Saltar al contenido principal

Compilar el SDK de Velopack

Applies to
Windows
MacOS
Linux

El SDK de Velopack es responsable de compilar versiones e instaladores.

Está compuesto de:

  • Binarios de Rust que se redistribuyen con las aplicaciones instaladas,
  • Paquete NuGet de .NET (Velopack),
  • Herramienta de línea de comandos de .NET (vpk).

Para probar el proyecto, es necesario compilar los binarios de Rust antes de compilar dotnet.

tip

Para el desarrollo local, solo necesitas compilar los binarios para tu sistema operativo actual — no necesitas compilar todas las plataformas para ejecutar las pruebas. Una compilación de producción multiplataforma completa (que combina binarios de cada sistema operativo) es gestionada por CI y se describe en la sección Release / Build a continuación.

Prerrequisitos

  • SDK de .NET 10 — la solución tiene múltiples objetivos net8.0, net9.0 y net10.0, por lo que se requiere el SDK más reciente (10) para compilar todo. CI instala los SDKs 8.0.x, 9.0.x y 10.0.x en paralelo.
  • Rust / Cargo — la versión mínima de Rust compatible es 1.75 (edición 2021).
  • dotnet tool update -g nbgv
  • dotnet tool install -g dotnet-coverage (solo se necesita para recopilar cobertura de código)

Depuración / Pruebas

En Windows, debes compilar los binarios de Rust usando la función windows antes de ejecutar las pruebas (algunos binarios la requieren). En OSX o Linux, debes ejecutar cargo build sin el indicador de función en su lugar.

En Windows:

git clone https://github.com/velopack/velopack.git
cd velopack
cargo build -p velopack_bins --features windows
dotnet build
dotnet test --no-build

En OSX / Linux:

git clone https://github.com/velopack/velopack.git
cd velopack
cargo build -p velopack_bins
dotnet build
dotnet test --no-build
tip

El ejecutor de pruebas está configurado mediante global.json para usar Microsoft.Testing.Platform. dotnet test --no-build sigue funcionando; también puedes apuntar a un proyecto específico, por ejemplo dotnet test --project test/Velopack.Tests/Velopack.Tests.csproj --no-build.

Versión / Compilación

Crear una versión de producción completa es complejo porque Velopack debe incluir binarios nativos para Windows, Linux y macOS. Debes compilar los binarios de Rust por separado en cada plataforma y luego combinarlos en la máquina de compilación final usando /p:PackRustAssets=true.

Para el desarrollo local, generalmente solo necesitas los binarios para tu sistema operativo actual. El enfoque más sencillo es:

En Windows:

git clone https://github.com/velopack/velopack.git
cd velopack
cargo build --release -p velopack_bins --features windows
dotnet build -c Release

En OSX:

git clone https://github.com/velopack/velopack.git
cd velopack
cargo build --release -p velopack_bins
dotnet build -c Release

En Linux:

git clone https://github.com/velopack/velopack.git
cd velopack
cargo build --release -p velopack_bins
dotnet build -c Release
tip

Para un ejemplo completo y funcional de cómo compilar una versión usando código local de Velopack, consulta los scripts de desarrollo en la muestra de Avalonia.

nota

Una compilación de producción multiplataforma completa (que combina binarios de todos los sistemas operativos en un único paquete) requiere compilar Rust en cada plataforma primero, luego recopilar todos los artefactos en target/release y ejecutar dotnet build -c Release /p:PackRustAssets=true /p:ContinuousIntegrationBuild=true. Este flujo de trabajo es gestionado por CI y no es práctico replicarlo localmente. Consulta los flujos de trabajo de CI para más detalles.

Preparación de Linux

Si estás en Linux (probado en Ubuntu), hay requisitos previos de paquetes adicionales.

Si estás compilando las bibliotecas/binarios nativos de Rust, se requieren los siguientes paquetes de desarrollo:

sudo apt-get install -y libgtk-3-dev libx11-dev libxext-dev libxft-dev libxinerama-dev libxcursor-dev libxrender-dev libxfixes-dev libpango1.0-dev libgl1-mesa-dev libglu1-mesa-dev libpipewire-0.3-dev libclang-dev libgbm-dev libegl-dev libwayland-dev

Instalar dotnet y configurar las rutas puede ser complicado, recomiendo usar el script dotnet-install.sh.

./dotnet-install.sh -c 10.0

Y luego agregar lo siguiente al final de tu .bashrc o .profile:

export DOTNET_ROOT="$HOME/.dotnet"
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
export PATH="$PATH:$HOME/.dotnet"
export PATH="$PATH:$HOME/.dotnet/tools"

A continuación, instala las herramientas de dotnet que faltan:

dotnet tool update -g nbgv
dotnet tool install -g dotnet-coverage

Debes verificar que nbgv funcione en la línea de comandos (p. ej., nbgv -h) antes de continuar. Si no funciona, verifica que tus herramientas se instalaron en ~/.dotnet/tools. Si no usaste el script dotnet-install.sh, dotnet podría estar en una ubicación diferente (p. ej., /usr/share/dotnet) y las rutas anteriores deberán actualizarse.

Una vez configurado dotnet, puedes instalar Rust, lo cual se hace normalmente con el script rustup disponible aquí

Para verificar que Rust está instalado y funciona correctamente, debes compilar los binarios de Rust:

cargo build --release -p velopack_bins