# Building and testing VoiceCat requires the .NET SDK selected by `global.json`, PowerShell, CMake, and a C compiler. Apple clients additionally require macOS, Xcode, and the pinned .NET macOS/iOS workloads. From the repository root: ```powershell ./scripts/build-native.ps1 dotnet restore VoiceCat.slnx --locked-mode dotnet build VoiceCat.slnx -c Release --no-restore dotnet test VoiceCat.slnx -c Release --no-build ./scripts/check-licenses.ps1 ``` `build-native.ps1` builds the narrow Opus/RNNoise shim in `native/media` and stages it under `artifacts/native`. NuGet dependencies and lock files are committed; GPL/LGPL dependencies are forbidden and the approved license set is enforced by `scripts/check-licenses.ps1`. Run the server and CLI locally with: ```powershell dotnet run --project src/VoiceCat.Server -- --data-dir ./voicecat-data dotnet run --project src/VoiceCat.Cli -- --host 127.0.0.1 --nickname Local --trust-first ``` Build the Windows client with `clients/windows/VoiceCat.slnx` and publish it with `clients/windows/publish-client.ps1`. On macOS, stage the native libraries and build the Apple clients with: ```bash ./scripts/build-native.ps1 ./scripts/build-native-ios.sh dotnet restore clients/apple/VoiceCat.Apple.slnx dotnet build clients/apple/VoiceCat.Apple.slnx -c Debug --no-restore ``` See `clients/apple/README.md` and `docs/ios-deploy.md` for signing and device workflows. Publish self-contained server binaries with `scripts/publish-server.ps1`. Generated native, client, and server artifacts live under `artifacts/`.