build: repair net40 Tray build and test-host binding redirects

Environment drift since ~7/26 broke a pristine checkout: (1) the SDK's
AutoGenerateBindingRedirects made RAR drop RioJoy.Core.dll for the net40
Tray exe (Bcl facade 1.5.11.0 vs 2.6.8.0 mismatch) - disabled for net40
with a hand-authored app.net40.config carrying the 2.6.8.0 redirects,
which XP's CLR 4.0 does not unify on its own; (2) 25 serial-link tests
failed on System.Runtime.CompilerServices.Unsafe load - Channels 8.0's
net462 binary references Unsafe 6.0.0.0 without declaring the dependency;
pinned the package and added the redirect app.config the earlier good
builds had auto-generated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-30 08:59:51 -05:00
co-authored by Claude Fable 5
parent d904f739d0
commit 23dec8901b
4 changed files with 60 additions and 0 deletions
@@ -15,6 +15,12 @@
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
<PackageReference Include="System.Threading.Channels" Version="8.0.0" />
<!-- Channels 8.0's net462 binary references Unsafe 6.0.0.0 but doesn't
declare it, so the graph would otherwise resolve 4.5.3 (assembly
4.0.4.1) and the test host dies with FileLoadException. Pin the
assembly Channels was built against; app.config redirects the older
requests (System.Memory / Tasks.Extensions) up to it. -->
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
<PackageReference Include="PolySharp" Version="1.14.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copied to RioJoy.Core.Tests.dll.config so the VSTest host binds the single
deployed System.Runtime.CompilerServices.Unsafe 6.0.0.0 (pinned in the
csproj — System.Threading.Channels 8.0's net462 binary requires it) for
the older versions System.Memory / System.Threading.Tasks.Extensions
request. Static rather than auto-generated so the suite doesn't depend on
RAR's redirect suggestions, which vary with the installed SDK/reference
assemblies. -->
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>