<# OMIKA - Compilation de l'application (mode test local) ======================================================= Compile les 3 composants de l'application : 1. Omika.Api (API) 2. Omika.Worker (synchronisation) 3. Omika.App.Desktop (application de bureau Avalonia) Par defaut en Debug. Avant de compiler, arrete les processus Omika en cours (ils verrouillent les DLL de sortie -> erreur MSB3027) sauf si -NoStop est passe. Utilisation : powershell -NoProfile -ExecutionPolicy Bypass -File .\docs\build_omika_test.ps1 .\docs\build_omika_test.ps1 -Release # compiler en Release .\docs\build_omika_test.ps1 -NoStop # ne pas arreter les processus Pour lancer apres compilation : .\docs\start_omika_test.ps1 -NoBuild #> [CmdletBinding()] param( [switch]$Release, [switch]$NoStop ) $ErrorActionPreference = 'Stop' # Racine du depot = parent du dossier docs/ contenant ce script. $root = Split-Path -Parent $PSScriptRoot $config = if ($Release) { 'Release' } else { 'Debug' } function Banner([string]$Text) { Write-Host '' Write-Host '============================================================' -ForegroundColor Cyan Write-Host " $Text" -ForegroundColor Cyan Write-Host '============================================================' -ForegroundColor Cyan } Banner "OMIKA - Compilation ($config)" # ---------- Arret des processus en cours (liberation des DLL) ---------- if ($NoStop) { Write-Host '' Write-Host 'Arret des processus ignore (-NoStop).' -ForegroundColor DarkGray Write-Host ' Attention : si l''application est en cours d''execution, la compilation echouera (DLL verrouillees).' -ForegroundColor Yellow } else { Write-Host '' Write-Host 'Arret des processus Omika en cours (pour liberer les DLL)...' -ForegroundColor Yellow $desktop = Get-Process -Name 'Omika.App.Desktop' -ErrorAction SilentlyContinue if ($desktop) { $desktop | Stop-Process -Force -ErrorAction SilentlyContinue Write-Host ' Application de bureau arretee.' -ForegroundColor Green } $dotnetProcs = Get-CimInstance Win32_Process -Filter "Name='dotnet.exe'" -ErrorAction SilentlyContinue | Where-Object { $_.CommandLine -like '*Omika.Api*' -or $_.CommandLine -like '*Omika.Worker*' } if ($dotnetProcs) { foreach ($proc in $dotnetProcs) { Stop-Process -Id $proc.ProcessId -Force -ErrorAction SilentlyContinue Write-Host " dotnet (PID $($proc.ProcessId)) arrete." -ForegroundColor Green } } if (-not $desktop -and -not $dotnetProcs) { Write-Host ' Aucun processus Omika en cours.' -ForegroundColor DarkGray } } # ---------- Compilation ---------- $projects = @( (Join-Path $root 'src\Omika.Api\Omika.Api.csproj'), (Join-Path $root 'src\Omika.Worker\Omika.Worker.csproj'), (Join-Path $root 'src\Omika.App.Desktop\Omika.App.Desktop.csproj') ) $failed = $false foreach ($project in $projects) { Write-Host '' Write-Host " > $project ($config)" -ForegroundColor Yellow # CONTOURNEMENT TEMPORAIRE : --no-restore -m:1 evite l'echec MSB4276 lie au # workload Android/iOS corrompu de cette machine (resolution SDK parallele). # A retirer apres 'dotnet workload repair'. dotnet build $project -c $config --nologo --no-restore -m:1 if ($LASTEXITCODE -ne 0) { Write-Host " [ERREUR] Echec de compilation : $project" -ForegroundColor Red $failed = $true break } } # ---------- Resultat ---------- Banner 'Resultat' if ($failed) { Write-Host ' ECHEC de la compilation.' -ForegroundColor Red exit 1 } Write-Host " Compilation ($config) terminee avec succes." -ForegroundColor Green Write-Host '' Write-Host ' Binaires generes :' -ForegroundColor Cyan Write-Host " API : src\Omika.Api\bin\$config\net10.0\Omika.Api.dll" -ForegroundColor Cyan Write-Host " Worker : src\Omika.Worker\bin\$config\net10.0\Omika.Worker.dll" -ForegroundColor Cyan Write-Host " Desktop : src\Omika.App.Desktop\bin\$config\net10.0\Omika.App.Desktop.exe" -ForegroundColor Cyan Write-Host '' Write-Host ' Pour lancer : .\docs\start_omika_test.ps1 -NoBuild' -ForegroundColor Cyan