Compilar el SDK de Velopack
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.
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.0ynet10.0, por lo que se requiere el SDK más reciente (10) para compilar todo. CI instala los SDKs8.0.x,9.0.xy10.0.xen paralelo. - Rust / Cargo — la versión mínima de Rust compatible es
1.75(edición 2021). dotnet tool update -g nbgvdotnet 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
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
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.
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