Skip to content

Release v0.1.12

Choose a tag to compare

@KernelErr KernelErr released this 19 Jul 11:46
· 6 commits to main since this release

v0.1.12

If you use the .NET Framework (net48) build, please upgrade — v0.1.11 and earlier are broken.

Fixed: net48 build could not serve any MCP request (#21)

On .NET Framework 4.8 the extension was compiled against System.Text.Json 8.0.5, but the dnSpy build it runs in ships 9.0.0. .NET Framework binds assemblies by exact version and dnSpy carries no binding redirect for that package, so nothing failed at load time: dnSpy started, the extension loaded, and the HTTP server came up — then the very first MCP request died inside HandleHttpRequest with:

System.IO.FileNotFoundException: Could not load file or assembly
'System.Text.Json, Version=8.0.0.5, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'

which surfaced to users simply as "cannot connect to MCP".

The reference is now pinned to the exact assembly dnSpy ships (9.0.0.0 / file version 9.0.24.52809).

Scope: net48 only. The .NET 10 builds were never affected — .NET rolls forward across assembly versions, so the mismatch was invisible there. If you were hitting this, either upgrade to v0.1.12 or switch to a dnSpy-net distribution.

Builds are now pinned to a released dnSpyEx version

CI and the release workflow previously checked out dnSpyEx/dnSpy at master. That meant the all-in-one zips bundled an unreleased snapshot of dnSpy, and — because our net48 package versions have to match the host's exactly — there was no correct version to pin: master and the official release resolve different ones, so any choice broke either the bundled zip or the standalone DLL.

Both workflows now build against a pinned tag (dnSpyEx v6.6.0), so the artifacts match the dnSpy you actually run, and upstream is adopted deliberately rather than drifting in.

Guards added

  • tests/check-host-deps.ps1 compares the net48 package versions resolved by this project and by dnSpy, and fails the build on drift — naming the exact version to set. It also rejects a DNSPY_REF mismatch between the two workflows and warns when a local checkout has drifted off the pinned tag. CI runs it before the net48 build.
  • tests/fixtures/run-tests.ps1 gained -Tfm net48, so the full end-to-end suite can be driven against the .NET Framework distribution. This closed the blind spot that let the bug ship: the suite only ever exercised .NET 10, where roll-forward hides exactly this class of binding fault.

Verified end-to-end on both distributions: 161 pass / 0 fail on .NET 10 and on net48.

Compatibility

No API or tool-schema changes — the 31 tools and their responses are unchanged. Upgrading is a drop-in DLL replacement.