param([ValidateSet('Debug','Release')][string]$Configuration='Release',[Parameter(Mandatory=$true)][string]$AutoCAD2026ManagedDir,[Parameter(Mandatory=$true)][string]$Plant3D2026ManagedDir) $ErrorActionPreference='Stop' dotnet build (Join-Path $PSScriptRoot '..\PRecAnnot2026.sln') --configuration $Configuration /p:AutoCAD2026ManagedDir=$AutoCAD2026ManagedDir /p:Plant3D2026ManagedDir=$Plant3D2026ManagedDir if($LASTEXITCODE -ne 0){ throw "Build failed: $LASTEXITCODE" } $bundleRoot=Join-Path $PSScriptRoot '..\artifacts\P_Rec_Annot.bundle' $bundleRoot=(Resolve-Path $bundleRoot).Path $contents=Join-Path $bundleRoot 'Contents\Windows' New-Item -ItemType Directory -Force -Path $contents | Out-Null $output=Join-Path $PSScriptRoot "..\src\PRecAnnot.Plant3D2026\bin\$Configuration\net8.0-windows" Get-ChildItem $output -File -Filter '*.dll' | Copy-Item -Destination $contents -Force Copy-Item (Join-Path $PSScriptRoot '..\bundle\P_Rec_Annot.bundle\PackageContents.xml') $bundleRoot -Force Copy-Item (Join-Path $PSScriptRoot '..\bundle\P_Rec_Annot.bundle\Settings.xml') $bundleRoot -Force $modules=@('PHP_REC_ANNOT','AnnotateLineNumbers','AutoLinenumberConnections','AutoElevation','InsertElevation','ExtentsIntersect','DataLinksRead') $assemblies=Get-ChildItem $contents -File -Filter '*.dll' | Sort-Object Name | ForEach-Object { [ordered]@{ name=$_.Name; sha256=(Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLowerInvariant(); required=$true } } $moduleManifestPath=Join-Path $bundleRoot 'Contents\module-manifest.json' $files=Get-ChildItem $bundleRoot -Recurse -File | Where-Object { $_.FullName -ne $moduleManifestPath } | Sort-Object FullName | ForEach-Object { [ordered]@{ relativePath=$_.FullName.Substring($bundleRoot.Length + 1).Replace('\','/'); sha256=(Get-FileHash $_.FullName -Algorithm SHA256).Hash.ToLowerInvariant(); required=$true } } $manifest=[ordered]@{ schemaVersion=2; package='P_Rec_Annot'; version='0.2.18'; modules=$modules; assemblies=$assemblies; files=$files } $manifest | ConvertTo-Json -Depth 5 | Set-Content (Join-Path $bundleRoot 'Contents\module-manifest.json') -Encoding utf8 Write-Host 'Bundle assembly build completed; deployment is intentionally not performed.'