functions/appdev/Invoke-Alc.ps1

function Invoke-Alc {
<#
.SYNOPSIS
Führt den AL-Compiler (`alc.exe`) mit den angegebenen Parametern aus.
 
.DESCRIPTION
Diese Funktion ruft den AL-Compiler (`alc.exe`) auf, um eine AL-Erweiterung zu kompilieren. Sie prüft zunächst, ob die übergebene `alc.exe`-Datei existiert, führt den Compiler dann mit den übergebenen Parametern aus und prüft nach Ausführung den Rückgabewert (`$LASTEXITCODE`), um ggf. Warnungen bei Fehlern auszugeben.
 
.PARAMETER AlcExe
Der vollständige Pfad zur `alc.exe`-Datei (AL-Compiler).
 
.PARAMETER CompilerParameter
Ein Array oder String mit Parametern, die an den AL-Compiler übergeben werden sollen.
 
.EXAMPLE
Invoke-Alc -AlcExe "C:\AL\10.0.0.0\alc.exe" -CompilerParameter @("-project:.\MyApp", "-packagecache:.\.alpackages")
 
Kompiliert das Projekt `MyApp` mit den angegebenen Parametern.
 
.OUTPUTS
Gibt keine Daten direkt zurück. Die Funktion führt den Compiler aus und zeigt ggf. eine Warnung, wenn der Rückgabewert ungleich 0 ist.
 
.NOTES
Die Funktion behandelt den Fehlercode `-1073740791` (Zugriffsverletzung / 0xC0000409) nicht als harten Fehler, da dieser beim AL-Compiler gelegentlich vorkommt.
 
#>


    [CmdletBinding()]
    param (
        $AlcExe,
        $CompilerParameter
    )
    
    begin {
        Test-Path -Path $AlcExe -PathType Leaf -ErrorAction:Stop
        Write-Debug "alc $([string]::Join(' ', $CompilerParameter))"
    }
    
    process {
        & $AlcExe $CompilerParameter
    }
    
    end {
        if ($LASTEXITCODE -ne 0 -and $LASTEXITCODE -ne -1073740791) {
            Write-Warning "Compilation failed (LASTEXITCODE: $($LASTEXITCODE))"
        }
    }
}