<# .SYNOPSIS Publiceert MijnBesluit.Web en pakt het resultaat in als één zip-bestand. .DESCRIPTION Draai dit op je ontwikkelmachine. Het resultaat is D:\publish\mijnbesluit.zip. Dat bestand pak je op de server uit met Uitrollen.ps1. .EXAMPLE .\tools\Publiceren.ps1 .\tools\Publiceren.ps1 -Uitvoer D:\publish -Configuratie Release #> [CmdletBinding()] param( # Map waarin de publicatie en het zip-bestand terechtkomen. [string] $Uitvoer = 'D:\publish', # Release voor de server, Debug alleen om iets te onderzoeken. [ValidateSet('Release', 'Debug')] [string] $Configuratie = 'Release', # Sla het inpakken over als je de losse bestanden wilt hebben. [switch] $GeenZip ) $ErrorActionPreference = 'Stop' # De projectmap is de map boven deze scriptmap. $Project = Join-Path (Split-Path $PSScriptRoot -Parent) 'src\MijnBesluit.Web' $DoelMap = Join-Path $Uitvoer 'mijnbesluit' $ZipPad = Join-Path $Uitvoer 'mijnbesluit.zip' if (-not (Test-Path $Project)) { throw "Projectmap niet gevonden: $Project. Draai dit script vanuit de map tools van het project." } Write-Host '' Write-Host 'MijnBesluit publiceren' -ForegroundColor Cyan Write-Host " Project : $Project" Write-Host " Configuratie : $Configuratie" Write-Host " Uitvoer : $DoelMap" Write-Host '' # Schoon beginnen: anders blijven bestanden van een vorige versie achter die nu niet meer # bestaan, en die worden dan mee uitgerold. if (Test-Path $DoelMap) { Write-Host 'Vorige publicatie opruimen...' Remove-Item $DoelMap -Recurse -Force } Write-Host 'Publiceren...' -ForegroundColor Cyan dotnet publish $Project -c $Configuratie -o $DoelMap --nologo if ($LASTEXITCODE -ne 0) { throw 'Publiceren is mislukt. Zie de fouten hierboven.' } # Controle: zonder deze twee bestanden start de site niet onder IIS. foreach ($nodig in @('MijnBesluit.Web.dll', 'web.config')) { if (-not (Test-Path (Join-Path $DoelMap $nodig))) { throw "Er ontbreekt iets in de publicatie: $nodig" } } # appsettings.Development.json hoort niet op een server thuis. $ontwikkel = Join-Path $DoelMap 'appsettings.Development.json' if (Test-Path $ontwikkel) { Remove-Item $ontwikkel -Force Write-Host 'appsettings.Development.json verwijderd uit de publicatie.' } if (-not $GeenZip) { Write-Host 'Inpakken...' -ForegroundColor Cyan if (Test-Path $ZipPad) { Remove-Item $ZipPad -Force } Compress-Archive -Path (Join-Path $DoelMap '*') -DestinationPath $ZipPad -CompressionLevel Optimal } $grootte = if (Test-Path $ZipPad) { '{0:N1} MB' -f ((Get-Item $ZipPad).Length / 1MB) } else { '-' } Write-Host '' Write-Host 'Klaar.' -ForegroundColor Green Write-Host " Map : $DoelMap" if (-not $GeenZip) { Write-Host " Zip : $ZipPad ($grootte)" } Write-Host '' Write-Host 'Nu op de server, in een PowerShell-venster als administrator:' -ForegroundColor Yellow Write-Host " .\Uitrollen.ps1 -Zip '\\tsclient\$($ZipPad.Substring(0,1))\$($ZipPad.Substring(3))'" Write-Host ''