From d7f5cd3298798a0fc1aa0df9d77ad21bafb0d7fa Mon Sep 17 00:00:00 2001 From: HitMargin <142143104+2228293026@users.noreply.github.com> Date: Sun, 1 Nov 2026 00:52:17 +0800 Subject: [PATCH 1/2] make-release: accept comma-joined -Rid from -File callers The CI passes the RID list as 'pwsh -File ... -Rid win-x64,linux-x64'. With -File, PowerShell binds that comma-joined string to the [string[]] parameter as a single element, so the per-RID loop ran once with the joined value and dotnet publish handed MSBuild '-r win-x64,linux-x64' in one piece -- MSBuild read the second RID as a bare switch and failed with MSB1006 ('Switch: linux-x64'). Normalize the parameter at the top of the script: split every element on commas and trim. Array callers (the documented default) are unaffected; -File callers now get one publish per RID as the loop intends. --- tools/make-release.ps1 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/make-release.ps1 b/tools/make-release.ps1 index 1462858..7cbb911 100644 --- a/tools/make-release.ps1 +++ b/tools/make-release.ps1 @@ -41,6 +41,18 @@ param( ) $ErrorActionPreference = 'Stop' + +# `-File` callers pass the RID list as one comma-joined string (the CI does +# `-Rid win-x64,linux-x64`), and [string[]] binds that as a single element -- +# the loop then hands `dotnet publish -r win-x64,linux-x64` to MSBuild in one +# piece and MSBuild reads the second RID as a bare switch (MSB1006 "Switch: +# linux-x64"). Split every element on commas and trim, so both caller forms +# (an array or a joined string) reach the loop as one RID per element. +$Rid = @($Rid | + ForEach-Object { $_ -split ',' } | + ForEach-Object { $_.Trim() } | + Where-Object { $_ }) + $root = Split-Path -Parent $PSScriptRoot Push-Location $root try { From 80f5bf45c03b88d0a1e0d71144c8e30c2c046f66 Mon Sep 17 00:00:00 2001 From: HitMargin <142143104+2228293026@users.noreply.github.com> Date: Sun, 1 Nov 2026 00:56:55 +0800 Subject: [PATCH 2/2] Re-trigger CI: transient MSB4018 GetAssemblyAttributes race on the runner (the previous run's failure is a file-lock, not a code change)