[CmdletBinding()] param( [string]$ProjectRoot ) $ErrorActionPreference = 'Stop' if (-not $ProjectRoot) { $ProjectRoot = Join-Path $PSScriptRoot '../..' } $resolvedProjectRoot = (Resolve-Path -LiteralPath $ProjectRoot).Path $runtimeProject = Join-Path $resolvedProjectRoot 'ShrinkModFramework.Runtime.csproj' $fixtureProject = Join-Path $PSScriptRoot 'ShrinkModFixtureBuilder.csproj' $fixtureOutputRoot = Join-Path $resolvedProjectRoot 'Temp/ShrinkModFixtureBuilder' $fixtureTargetRoot = Join-Path $resolvedProjectRoot 'Assets/Modules/ShrinkModFramework/Tests/Fixtures' dotnet build $runtimeProject /m:1 --nologo if ($LASTEXITCODE -ne 0) { throw "ShrinkModFramework.Runtime build failed with exit code $LASTEXITCODE." } foreach ($variant in 'V1', 'V2', 'V3') { $outputDirectory = Join-Path $fixtureOutputRoot $variant $intermediateDirectory = Join-Path $fixtureOutputRoot "obj/$variant/" dotnet build $fixtureProject /m:1 --nologo ` -p:FixtureVariant=$variant ` -p:BaseIntermediateOutputPath=$intermediateDirectory ` -p:OutputPath=$outputDirectory if ($LASTEXITCODE -ne 0) { throw "External fixture $variant build failed with exit code $LASTEXITCODE." } $source = Join-Path $outputDirectory 'ExternalFixture.Mod.dll' $targetName = switch ($variant) { 'V1' { 'ExternalFixture.Mod.V1.dll.bytes' } 'V2' { 'ExternalFixture.Mod.V2.Failing.dll.bytes' } 'V3' { 'ExternalFixture.Mod.V3.dll.bytes' } } Copy-Item -LiteralPath $source -Destination (Join-Path $fixtureTargetRoot $targetName) -Force } Write-Host 'ShrinkModFramework external fixture DLLs rebuilt.'