You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix Vsix Microsoft.Bcl.AsyncInterfaces version conflict with VS 17.x
VS 17.14 ships Microsoft.Bcl.AsyncInterfaces 9.0.0.0 and devenv.exe.config
binding-redirects 0-9.0.0.0 to that version. Anything in the Vsix that
references >9.0.0.0 falls outside the redirect, so devenv loads a second copy
from the extension folder, producing duplicate IAsyncDisposable type identities
and silent runtime failures.
CodeConverter was transitively pulling in Microsoft.Bcl.AsyncInterfaces 10.0.0.0
via System.Linq.AsyncEnumerable (which only ships as a 10.x package) and
System.Text.Json 10.0.0. Drop those package references from CodeConverter and
hand-roll the small subset of System.Linq.AsyncEnumerable we actually used
(ToArraySafeAsync, AsAsyncEnumerable, SelectSafe). The helpers are deliberately
renamed so they do not clash with .NET 10's BCL System.Linq.AsyncEnumerable
extension methods when referenced by a multi-targeted consumer.
System.Linq.AsyncEnumerable is added directly to CodeConv.csproj instead - the
CLI tool never loads into devenv.exe so the binding-redirect ceiling does not
apply there.
Add VsixAssemblyCompatibilityTests that statically walks the Vsix output via
PEReader and asserts every referenced version of a known VS-owned polyfill
(currently Microsoft.Bcl.AsyncInterfaces) is satisfiable by the version the
oldest supported VS ships. The test reproduces the original bug and now passes.
0 commit comments