Skip to content

+semver:minor - feat(mocks): runtime auto-stubs for interfaces the source generator cannot see - #6519

Merged
thomhurst merged 9 commits into
mainfrom
feat/6514-runtime-auto-stubs
Jul 30, 2026
Merged

+semver:minor - feat(mocks): runtime auto-stubs for interfaces the source generator cannot see#6519
thomhurst merged 9 commits into
mainfrom
feat/6514-runtime-auto-stubs

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Summary

Fixes #6514 — feature parity with runtime-proxy libraries' auto-substitution. When a loose-mode mock member must produce an interface the source generator produced no mock for — most notably a generic method like IInvocationFeatures.Get<T>() invoked inside a third-party SDK with a T that is internal to that SDK and structurally unnameable by the test assembly — the call fell through to null, surfacing as an NRE deep in SDK code. This was a hard migration blocker from NSubstitute (reported against the Azure Functions Worker SDK).

How it works

The key insight: the generated Get<T>() override is itself generic, so at runtime the engine sees the real System.Type even when the test assembly can't name it. The engine's existing auto-mock fallback (TryGetLooseAutoMockResultMockRegistry.TryCreateAutoMock) now falls back to RuntimeStubGenerator on a registry miss:

  • Emission: a Reflection.Emit type per interface (cached), in a dynamic assembly named DynamicProxyGenAssembly2 carrying Castle DynamicProxy's well-known public key — the exact identity SDKs across the ecosystem already grant InternalsVisibleTo for NSubstitute/Moq compatibility, so every internal interface reachable by those proxies is reachable by these stubs. Dynamic assemblies are never strong-name verified; the public key alone satisfies the grant.
  • Behavior: NSubstitute-style defaults, computed lazily and cached per member for stable identity — "" for strings, completed tasks (Task<T>/ValueTask<T> included), empty collections, zeroed value types, recursive stubs for interface members (or a real configurable Mock<T> when a source-generated factory exists for that nested type). Properties round-trip set values. Generic interface methods are supported, including constraint re-emission and out-parameter zeroing.
  • Guards: loose mode only (strict still throws); RuntimeFeature.IsDynamicCodeSupported — inert on Native AOT, which keeps the previous default-value behavior; opt-out via settings.Mocks.RuntimeAutoStubs = false; any emission failure (interface with no matching IVT grant, static abstract members, by-ref returns) is a cached miss falling back to the previous behavior. netstandard2.0 builds carry a no-op implementation.
  • Stubs are deliberately not configurable or verifiable — their types can't be named in test code (that's the premise). Nameable interfaces keep getting real mocks.

Behavior change

In loose mode, unconfigured interface-returning calls that previously returned null (no generated factory) now return a functional stub on JIT runtimes — hence +semver:minor. Opt-out restores the old behavior globally.

Tests

Issue6514Tests (skipped on Native AOT via the existing SkipIfNotDynamicCodeSupported attribute): the issue's Get<T>-with-internal-type shape (the test project now grants IVT to DynamicProxyGenAssembly2 exactly like real SDKs do), unregistered public interfaces, recursion, task/collection/string defaults, identity caching, registry-preferred real mocks via Mock.Get, value-type defaults unchanged, strict mode unchanged, and the opt-out. Full suites: 1192/1192 (net10.0), 1191/1191 (net9.0), 1169/1169 (net8.0); generator snapshots 90/90; Http 54/54, Logging 31/31.

Docs: new Runtime Auto-Stubs section under Recursive / Auto-Mocking in docs/writing-tests/mocking/advanced.md.

…urce generator cannot see

A loose-mode mock member that must produce an interface with no
source-generated factory — most notably a generic method like
IFeatures.Get<T>() invoked inside a third-party SDK with a T that is
internal to that SDK, unnameable by the test assembly — fell through to
null, surfacing as an NRE deep in SDK code (#6514). Runtime-proxy
libraries handle this via Castle auto-substitution, and its absence was
a structural migration blocker.

The engine's auto-mock fallback now emits a functional stub at runtime
when the registry has no factory: a Reflection.Emit type in a dynamic
assembly named DynamicProxyGenAssembly2 carrying Castle DynamicProxy's
well-known public key, so the InternalsVisibleTo grants SDKs already
extend for NSubstitute/Moq compatibility apply to TUnit.Mocks too.
Dynamic assemblies are never strong-name verified, so the public key
alone satisfies the grant.

Stubs are recursive with NSubstitute-style defaults — empty strings,
completed tasks, empty collections, zeroed value types, further stubs
(or a real configurable Mock<T> when a generated factory exists) for
interface members — properties round-trip set values, and member
results are cached for stable identity. Generic interface methods are
supported, including constraint re-emission. Not configurable or
verifiable: their types cannot be named by the test.

Guards: loose mode only; RuntimeFeature.IsDynamicCodeSupported (inert
on Native AOT, retaining the previous defaults); opt-out via
TUnitMocksSettings.RuntimeAutoStubs; emission failures (no IVT grant,
static abstracts, by-ref returns) are cached misses that fall back to
the previous behavior. netstandard2.0 keeps a no-op implementation.

Fixes #6514
Comment thread src/TUnit.Mocks/RuntimeStubs/RuntimeStub.cs Outdated
@greptile-apps

greptile-apps Bot commented Jul 30, 2026

Copy link
Copy Markdown

Greptile Summary

Runtime auto-stubs now provide loose-mode defaults for interfaces unavailable to source generation.

  • Adds runtime-emitted interface implementations with recursive defaults, property/indexer state, generic methods, and stable per-member identity.
  • Integrates runtime stubs into the existing auto-mock fallback with strict-mode, dynamic-code, and global opt-out guards.
  • Adds regression coverage and documents runtime behavior and platform limitations.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
src/TUnit.Mocks/RuntimeStubs/RuntimeStub.cs Stores property and indexer state and caches defaults by member slot and closed return-type identity, resolving the previously reported generic-instantiation collision.
src/TUnit.Mocks/RuntimeStubs/RuntimeStubGenerator.cs Emits cached runtime implementations for supported closed interfaces, including generic method signatures, constraints, accessors, events, and out-parameter initialization.
src/TUnit.Mocks/RuntimeStubs/RuntimeStubDefaults.cs Produces recursive mocks or stubs and conventional defaults for strings, tasks, collections, arrays, nullable types, and value types.
src/TUnit.Mocks/MockEngine.cs Adds runtime stubs to loose auto-mock fallback and keys the engine cache by member name and exact return-type identity.
tests/TUnit.Mocks.Tests/Issue6514Tests.cs Covers inaccessible interfaces, recursive defaults, settings and platform guards, generic-instantiation isolation, identity caching, and stateful properties and indexers.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Loose mock member call] --> B{Generated mock factory exists?}
    B -->|Yes| C[Return configurable generated mock]
    B -->|No| D{Runtime auto-stubs enabled and dynamic code supported?}
    D -->|No| E[Return previous default value]
    D -->|Yes| F[Emit or reuse interface stub type]
    F --> G[Create and cache stub per member and return type]
    G --> H[Return recursive default or stored property/indexer value]
Loading

Reviews (9): Last reviewed commit: "fix(mocks): preserve custom modifiers on..." | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 722f6f2571

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +21 to +22
protected object? GetReturnValue(int slot, Type returnType)
=> _returnCache.GetOrAdd(slot, static (_, t) => RuntimeStubDefaults.GetDefault(t), returnType);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep null defaults out of the concurrent cache

When a runtime stub member returns an ordinary class, delegate, nullable value, or another unsupported reference type, RuntimeStubDefaults.GetDefault returns null, but ConcurrentDictionary.GetOrAdd rejects null values and throws ArgumentNullException. Thus loose stubs throw instead of returning the documented default; use a sentinel or bypass caching when the computed value is null.

Useful? React with 👍 / 👎.

Comment on lines +21 to +22
protected object? GetReturnValue(int slot, Type returnType)
=> _returnCache.GetOrAdd(slot, static (_, t) => RuntimeStubDefaults.GetDefault(t), returnType);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include the closed return type in the cache key

For an emitted generic member such as T Get<T>(), every constructed invocation shares the same numeric slot. After Get<int>() caches a boxed integer, a later Get<string>() retrieves that value and the emitted unbox.any/cast fails with InvalidCastException. Key the cache by both slot and the runtime return type so different generic instantiations retain independent defaults.

Useful? React with 👍 / 👎.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review

Clever fix for #6514 — reusing Castle DynamicProxy's well-known public key to piggyback on SDKs' existing InternalsVisibleTo grants is a neat way to reach unnameable internal types without needing per-SDK configuration. AOT/trimming guards, the opt-out flag, and the docs are all solid.

Two correctness issues, one already partially flagged by Greptile:

1. Generic-method return cache collides across type arguments (confirmed, same as Greptile's finding)

RuntimeStub.GetReturnValue(int slot, Type returnType) (RuntimeStub.cs:99-100) keys the cache by slot alone:

protected object? GetReturnValue(int slot, Type returnType)
    => _returnCache.GetOrAdd(slot, static (_, t) => RuntimeStubDefaults.GetDefault(t), returnType);

RuntimeStubGenerator explicitly supports generic methods on the stubbed interface (constraint re-emission, DefineGenericParameters, etc. in RuntimeStubGenerator.cs:490-536), and each generic method gets one fixed slot. If a single stub instance invokes that method twice with different type arguments (e.g. Convert<int>() then Convert<string>()), the second call reuses the first call's cached boxed value and Unbox_Any throws InvalidCastException — the generic-method support is untested for this exact case (Issue6514Tests only exercises Get<T>() on the source-generated mock of IStubFeatures, never a generic method declared on a runtime-stubbed interface).

Suggested fix: key the cache by (int Slot, Type ReturnType) instead of int alone — e.g. ConcurrentDictionary<(int, Type), object?>. That preserves per-instantiation identity stability (the stated goal) while eliminating the collision, and is a minimal change to the existing structure. Please also add a test that invokes a stubbed generic method with two different type arguments on the same stub instance.

2. Unsynchronized ModuleBuilder/TypeBuilder access under TUnit's parallel-by-default execution

EmitStubType (RuntimeStubGenerator.cs:349-425) calls module.DefineType(...) / tb.CreateType() with no synchronization beyond the ConcurrentDictionary.GetOrAdd on _stubTypes. GetOrAdd's factory can run concurrently for different keys — so two tests running in parallel that each first-touch a distinct never-before-stubbed interface will call into EmitStubType on the same shared ModuleBuilder from different threads simultaneously.

ModuleBuilder.DefineType/TypeBuilder.CreateType are documented as not thread-safe on coreclr without external synchronization (see dotnet/runtime#64094, "Generation of dynamic types with multiple threads ... causes runtime corruption"). Notably, Castle DynamicProxy — whose identity this code deliberately impersonates — wraps its own ModuleScope.DefineType in a lock for exactly this reason (castleproject/Core#399); this PR borrows Castle's assembly identity but not its concurrency safeguard. Given TUnit tests run in parallel by default, this looks reachable in normal use, not just a theoretical edge case.

Suggested fix: wrap the type-definition/creation section of EmitStubType (or at minimum module.DefineType(...) through tb.CreateType()) in a static lock, matching Castle's approach.

Everything else — the defaults table, out-parameter zeroing, recursive stub/mock preference order in RuntimeStubDefaults.GetDefault, and the opt-out test — looks correct and well covered.

Review finding (#6519): a generic member like T Get<T>() on a
runtime-stubbed interface shares one member slot across every
instantiation, so the per-slot default cache handed Get<string>() the
boxed value cached by Get<int>() and the emitted unbox/cast threw
InvalidCastException. The cache key now pairs the slot with the closed
return type observed at the call; property slots are unaffected (their
type is constant) and same-instantiation identity stays stable.
@thomhurst

Copy link
Copy Markdown
Owner Author

Both P1s reviewed:

Generic return cache conflation — valid, fixed in 9bba13e. T Get<T>() on a stubbed interface shares one member slot across instantiations, so Get<string>() could retrieve Get<int>()'s boxed value and fail the emitted unbox/cast. The cache is now keyed by (slot, closed return type); regression test Stub_Generic_Method_Keeps_Instantiations_Separate covers int/interface/string instantiations plus same-instantiation identity.

"GetOrAdd rejects null values" — not correct, no change. ConcurrentDictionary only rejects null keys; null values are fine for a reference-type TValue. MockEngine.AutoMockCache (ConcurrentDictionary<string, IMock?>) in this same codebase already stores null values on every registry miss. Null defaults (plain classes, delegates, nullable value types) cache and round-trip as null exactly as documented.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review

Overall this is a well-scoped, carefully-guarded feature: gated behind RuntimeFeature.IsDynamicCodeSupported (inert on AOT), a documented opt-out, cached emission with a sane try/catch-to-null-on-miss fallback, and solid generic-constraint re-emission for the Get<T>() case the issue is actually about. The two P1s from the earlier review round (generic-instantiation cache conflation, GetOrAdd-null claim) both look correctly resolved in the current diff — the return cache is now keyed by (slot, closedReturnType) and there's a regression test for it (Stub_Generic_Method_Keeps_Instantiations_Separate).

One correctness issue I think is worth fixing before merge:

Indexer properties ignore their index argument and share a single cached value.

RuntimeStubGenerator.EmitAccessor (src/TUnit.Mocks/RuntimeStubs/RuntimeStubGenerator.cs:314-341) and EmitReturn (:362-394) key a property's cached value purely by slot — the emitted IL for a getter never loads the index parameter(s) onto the stack, and the setter only ever stores the last argument (the value) via SetPropertyValueMethod at that same fixed slot (:324-333). IsSupported (:189-207) only rejects static-abstract members and by-ref returns — it doesn't flag indexers, so an interface with an indexer is still considered "supported" and gets a stub silently emitted.

Concretely, for an interface with TValue this[TKey key] { get; set; } (e.g. IDictionary<,>-shaped interfaces, or something like ASP.NET's IHeaderDictionary — exactly the kind of HTTP "features" interface this PR's own motivating issue is about):

stub["A"] = valueA;
stub["B"] = valueB;
stub["A"]; // returns valueB, not valueA — same slot, index ignored

and for an unset indexer, stub[key1] and stub[key2] return the same cached default instance regardless of key. This is silent — it doesn't throw or fall back to the documented null/previous-default behavior, so it's a plausible source of confusing test failures for exactly the SDK-interface scenarios this feature targets.

Given the existing pattern in the file (reject unsupported shapes in IsSupported and let them fall back to the previous null-returning behavior, as already done for static-abstract members and by-ref returns), I'd suggest adding a check there for indexers (property.GetIndexParameters().Length > 0) rather than trying to key the cache by argument values — that keeps the fix small and consistent with how every other unsupported shape in this emitter is already handled, and it's a safe fallback since loose-mode null is already an accepted (if less convenient) outcome elsewhere in this design.

Everything else — the module/type caching, the DynamicProxyGenAssembly2 identity trick, the generic constraint re-emission, the AOT/netstandard2.0 fallback split — looks solid and well-tested. Nice work on the fast turnaround on the earlier review round.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9bba13e66d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +48 to +50
if (definition == typeof(ValueTask<>))
{
return Activator.CreateInstance(type, GetDefault(typeArgs[0]));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Construct ValueTask without ambiguous overload binding

When T is an ordinary reference type for which GetDefault(T) returns null, such as a sealed DTO, this reflective construction must choose between ValueTask<T>(T) and ValueTask<T>(Task<T>). Since null matches both unrelated parameter types, the default binder throws AmbiguousMatchException, so invoking a runtime-stub member returning ValueTask<Dto> fails instead of returning a completed task containing null. Select the constructor whose parameter is exactly T, or use a closed generic helper.

Useful? React with 👍 / 👎.

Comment thread src/TUnit.Mocks/RuntimeStubs/RuntimeStubGenerator.cs
…alueTask default construction

Review findings (#6519):

Indexers: the emitted accessors forwarded only the member slot, so
stub[1] = x made stub[2] return x and every index observed the last
write. The emitted IL now boxes the index arguments into an object?[]
and state lives in a per-(slot, structural index key) map; defaults
stay index-independent for stable identity. Indexers with by-ref /
ref-struct / pointer index parameters (which cannot be boxed) keep the
previous slot-level behavior.

ValueTask<T> defaults: ValueTask<T> has both (T) and (Task<T>)
constructors, and a null inner default (reference-typed T) matches
either, making Activator.CreateInstance ambiguous. The constructor is
now selected explicitly by parameter type.
@thomhurst

Copy link
Copy Markdown
Owner Author

Second review round — both P2s verified and fixed in 5cae648:

Indexer state keyed by index arguments — valid. Emitted accessors now box the index arguments into an object?[] and state lives in a per-(slot, structural index key) map, so stub[1]/stub[2] round-trip independently (multi-parameter indexers included, covered by tests). Defaults remain index-independent for stable identity. Indexers whose index parameters can't be boxed (by-ref/ref-struct/pointer) keep slot-level behavior.

ValueTask<T> ambiguous construction — valid. ValueTask<T> has (T) and (Task<T>) ctors and a null inner default matches both; the ctor is now selected explicitly by parameter type. Test covers ValueTask<Dto> returning a completed task with a null result.

Suites: 1195/1195 net10.0, 1172/1172 net8.0.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5cae64836e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/TUnit.Mocks/MockEngine.cs
Two types with identical namespace-qualified names from different assemblies
collided in the auto-mock/stub cache (memberName + FullName string), so the
second invocation retrieved the first type's stub and the TReturn cast threw
InvalidCastException. Cache is now keyed by (memberName, Type). TryGetAutoMock
(no callers) updated to match.
@thomhurst

Copy link
Copy Markdown
Owner Author

Third round — Codex P2 (stub cache keyed by FullName string) verified and fixed in 89c6d6b.

Valid: MockEngine.AutoMockCache keyed memberName + "|" + typeof(TReturn).FullName, so two types with identical namespace-qualified names from different assemblies shared one cache entry — the second invocation retrieved the first type's stub and the (TReturn) cast threw InvalidCastException. The cache (all 9 sites, MockEngine.Typed.cs included) is now keyed by (memberName, Type) — Type identity, never a name string. TryGetAutoMock (no callers anywhere) updated to match.

Regression test emits two dynamic assemblies each declaring Issue6514.Collision.ISameFullName and resolves both through the same stubbed Get<T>() — each gets its own stub implementing its own type.

Suites: 1196/1196 net10.0, 1173/1173 net8.0.

@claude

claude Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review

Checked this round's changes against the three prior review rounds — the generic-instantiation cache fix ((slot, returnType) in RuntimeStub), the indexer state fix (index-argument-keyed _indexerValues), the ValueTask<T> explicit-ctor fix, and this round's (memberName, Type) cache-key fix (replacing the FullName-string collision across assemblies) are all correctly implemented and match what was described in the commit messages.

One issue from round 1 appears to have been dropped rather than fixed:

ModuleBuilder/TypeBuilder access in EmitStubType is still unsynchronized.

TryCreateStub (src/TUnit.Mocks/RuntimeStubs/RuntimeStubGenerator.cs:83-96) calls _stubTypes.GetOrAdd(interfaceType, ...), whose factory invokes EmitStubType. ConcurrentDictionary.GetOrAdd only avoids running the factory twice for the same key — it does nothing to serialize factory execution across different keys. EmitStubType (:120-124, 189) calls module.DefineType(...) and tb.CreateType() on the single shared _module (EnsureModule, :221-233) with no lock around it. Two tests that each first-touch a distinct, never-before-stubbed interface concurrently — the default mode under TUnit's parallel test execution — will call into DefineType/CreateType on the same ModuleBuilder from different threads at the same time, which is documented as unsafe on coreclr (dotnet/runtime#64094) and is exactly why Castle DynamicProxy — whose assembly identity this PR deliberately reuses — wraps its own ModuleScope.DefineType in a lock.

I flagged this in the first review round; the reply addressing "Both P1s" fixed the generic-cache collision and a separate GetOrAdd-null claim, but this thread-safety item wasn't among them and there's still no lock or test exercising concurrent first-time stub creation in Issue6514Tests.cs.

Suggested fix, consistent with the lock-based pattern already used throughout this same project (MockEngine.cs, MethodSetup.cs, MockRepository.cs, CompositeBehavior.cs all guard shared mutable state this way): wrap the body of EmitStubType (or at least EnsureModule() through tb.CreateType()) in a static lock, e.g.

private static readonly Lock _emitLock = new();
...
lock (_emitLock)
{
    var module = EnsureModule();
    ...
    return tb.CreateType();
}

This keeps the existing ConcurrentDictionary-based per-interface caching (so the common case of a cache hit stays lock-free) while serializing the actual type-emission path, matching Castle's approach for the identity this code borrows.

Everything else in this round — Type-identity cache keys across all call sites in MockEngine.Typed.cs, the TryGetAutoMock signature update, and the new regression test for cross-assembly same-FullName collisions — looks correct and well covered.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 89c6d6bf54

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/TUnit.Mocks/MockEngine.Typed.cs Outdated
Comment on lines 124 to 127
var cacheKey = (memberName, typeof(TReturn));
var autoMock = AutoMockCache.GetOrAdd(cacheKey, _ =>
{
MockRegistry.TryCreateAutoMock(typeof(TReturn), Behavior, out var m);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route typed cache misses through runtime stubs

When a generated non-generic member has 1–8 arguments and returns an interface without a generated factory—for example, IServiceProvider Resolve(int id), since MemberDiscovery.GetAutoMockFactoryMethod excludes System.* interfaces—the generator selects this typed handler. Its cache factory only queries MockRegistry, so a miss still returns null and never reaches the new RuntimeStubGenerator fallback used by the object-array handler. Apply the runtime-stub fallback to every typed arity as well, preferably through the shared helper.

Useful? React with 👍 / 👎.

…ugh stubs

Review round 4:
- EmitStubType now runs under a static lock: ConcurrentDictionary.GetOrAdd
  only de-duplicates per key, so distinct interfaces first-touched in
  parallel reached ModuleBuilder.DefineType/TypeBuilder.CreateType on the
  shared module concurrently (unsafe on coreclr, dotnet/runtime#64094).
  Cache hits stay lock-free.
- The eight typed cache-miss handlers (1-8 args) in MockEngine.Typed.cs now
  call TryGetLooseAutoMockResult instead of an inlined registry-only lookup,
  so members returning interfaces without a generated factory (e.g.
  System.*) reach the runtime-stub fallback like the object-array handler.
ncosentino added a commit to ncosentino/eve-client that referenced this pull request Aug 2, 2026
Updated
[defaultdocumentation.console](https://github.com/Doraku/DefaultDocumentation)
from 1.2.2 to 1.2.5.

<details>
<summary>Release notes</summary>

_Sourced from [defaultdocumentation.console's
releases](https://github.com/Doraku/DefaultDocumentation/releases)._

## 1.2.5

## Bug fixes
- fixed nint and nuint handling (#​255)
- replaced HTML numeric entities with literal Unicode arrows

- [api nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Api/1.2.5)
- [markdown nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Markdown/1.2.5)
- [msbuild task nuget
package](https://www.nuget.org/packages/DefaultDocumentation/1.2.5)
- [dotnet tool nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Console/1.2.5)


## 1.2.4

- fixed msbuild task issue (#​237)

- [api nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Api/1.2.4)
- [markdown nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Markdown/1.2.4)
- [msbuild task nuget
package](https://www.nuget.org/packages/DefaultDocumentation/1.2.4)
- [dotnet tool nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Console/1.2.4)


## 1.2.3

- added net10 support for DefaultDocumentation.Console
- fixed ValueType appearing in definition constrains

- [api nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Api/1.2.3)
- [markdown nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Markdown/1.2.3)
- [msbuild task nuget
package](https://www.nuget.org/packages/DefaultDocumentation/1.2.3)
- [dotnet tool nuget
package](https://www.nuget.org/packages/DefaultDocumentation.Console/1.2.3)


Commits viewable in [compare
view](https://github.com/Doraku/DefaultDocumentation/compare/1.2.2...1.2.5).
</details>

Updated [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest)
from 18.6.0 to 18.8.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.NET.Test.Sdk's
releases](https://github.com/microsoft/vstest/releases)._

## 18.8.1

## What's Changed
* Fix protocol negotiation timeout when STJ reflection is disabled
(18.8.1) by @​nohwnd in https://github.com/microsoft/vstest/pull/16281


**Full Changelog**:
https://github.com/microsoft/vstest/compare/v18.8.0...v18.8.1

## 18.8.0

## What's Changed
* Migrate from Newtonsoft.Json to System.Text.Json / Jsonite (merge to
main) by @​nohwnd in https://github.com/microsoft/vstest/pull/15687
- For more detail refer to
https://devblogs.microsoft.com/dotnet/vs-test-is-removing-its-newtonsoft-json-dependency/
* Create source-only filter package by @​Youssef1313 in
https://github.com/microsoft/vstest/pull/15638
* Add ARM64 msdia140.dll support to test platform packages by @​nohwnd
in https://github.com/microsoft/vstest/pull/15692
* Fix mutex cleanup crash on macOS/Linux by @​nohwnd in
https://github.com/microsoft/vstest/pull/15684
* Restrict artifact temp directory permissions on Unix by @​nohwnd in
https://github.com/microsoft/vstest/pull/15729
* Add support for filtering uncategorized tests with TestCategory=None
by @​Evangelink in https://github.com/microsoft/vstest/pull/15727
* Fix SCI binding failure in DTA hosts (main) by @​nohwnd in
https://github.com/microsoft/vstest/pull/15724
* Fix HTML logger parallel file collision by @​nohwnd in
https://github.com/microsoft/vstest/pull/15435
* Improve error message when testhost cannot be found by @​nohwnd in
https://github.com/microsoft/vstest/pull/16053
* Fix HTML logger exception on invalid XML chars in test display names
by @​nohwnd in https://github.com/microsoft/vstest/pull/16051

**Full Changelog**:
https://github.com/microsoft/vstest/compare/v18.7.0...v18.8.0

## 18.7.0

## What's Changed
* Add ARM64 msdia140.dll support to test platform packages by
@​jamesmcroft in https://github.com/microsoft/vstest/pull/15689
* Update System.Memory from 4.5.5 to 4.6.3 by @​nohwnd in
https://github.com/microsoft/vstest/pull/15706

## New Contributors
* @​jamesmcroft made their first contribution in
https://github.com/microsoft/vstest/pull/15689

**Full Changelog**:
https://github.com/microsoft/vstest/compare/v18.6.0...v18.7.0

Commits viewable in [compare
view](https://github.com/microsoft/vstest/compare/v18.6.0...v18.8.1).
</details>

Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet)
from 10.0.300 to 10.0.301.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.SourceLink.GitHub's
releases](https://github.com/dotnet/dotnet/releases)._

## 10.0.301

You can build .NET 10.0 from the repository by cloning the release tag
`v10.0.301` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/compare/v10.0.300...v10.0.301).
</details>

Updated [nbgv](https://github.com/dotnet/Nerdbank.GitVersioning) from
3.7.115 to 3.10.91.

<details>
<summary>Release notes</summary>

_Sourced from [nbgv's
releases](https://github.com/dotnet/Nerdbank.GitVersioning/releases)._

## 3.10.91

## What's Changed

* Retry file operations on access denied errors by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1408


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.85...v3.10.91

## 3.10.85

## What's Changed

* Avoid writing server.json multiple times in a single pack by @​AArnott
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1391

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.70...v3.10.85

## 3.10.70

## What's Changed

### Fixes

* Fix case insensitivity for the managed engine on git worktrees, and
implement for libgit2 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1334
* Fix native heap corruption in GitPackIndexMappedReaderTests by
@​AArnott in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1360

### Enhancements

* Add prerelease property to inheriting version.json files by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1317
* Add NBGV_SetCloudBuildVersionVars property to disable cloud build
variable output by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1324
* Add --what-if option to prepare-release command for simulating version
changes by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1242
* Build nbgv CLI tool for .NET 9 and 10 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1369


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.50...v3.10.70

## 3.10.44-alpha

## What's Changed

### Fixes

* Fix case insensitivity for the managed engine on git worktrees, and
implement for libgit2 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1334

### Enhancements

* Add --what-if option to prepare-release command for simulating version
changes by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1242
* Add NBGV_SetCloudBuildVersionVars property to disable cloud build
variable output by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1324


### Dependency updates

* chore(deps): update dependency microsoft.build.locator to 1.11.2 by
@​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1304
* chore(deps): update dotnet monorepo by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1309
* Update dotnet monorepo by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1338


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.8-alpha...v3.10.44-alpha

## 3.10.8-alpha

## What's Changed
* Add prerelease property to inheriting version.json files by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1317


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.50...v3.10.8-alpha

## 3.9.50

## What's Changed
* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1279
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1281
* Automatically disable git engine for Dependabot environments by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1287
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1291
* Allow uppercase letters in pre-release version identifiers by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1293

## New Contributors
* @​micheloliveira-com made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1277

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.118...v3.9.50

## 3.9.37-alpha

## What's Changed
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1291


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.32-alpha...v3.9.37-alpha

## 3.9.32-alpha

## What's Changed

* Automatically disable git engine for Dependabot environments by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1287

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.17-alpha...v3.9.32-alpha

## 3.9.17-alpha

## What's Changed
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1281


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.15-alpha...v3.9.17-alpha

## 3.9.15-alpha

## What's Changed

* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1279

## New Contributors
* @​micheloliveira-com made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1277

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.118...v3.9.15-alpha

## 3.8.118

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1174
* Catch a more general JsonException. by @​ANGEL-OF-DEV in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* Retarget links to migrated docs by @​bencemali in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* Check MSBuild items with case insensitivity by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1253
* Only do Android version check on applications by @​dotMorten in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1264

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1153
* Add support for stamping version on server.json for MCP servers with
0.0.0-placeholder replacement by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1270 and by
@​AArnott in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1271
* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1263

## Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* @​bencemali made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* @​Copilot made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* @​dotMorten made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* @​emmanuel-ferdman made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1145

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.8.118

## 3.8.106-alpha

## What's Changed

### Enhancements

* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1263

### Fixes

* Catch a more general JsonException. by @​ANGEL-OF-DEV in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* Retarget links to migrated docs by @​bencemali in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* Check MSBuild items with case insensitivity by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1253
* Only do Android version check on applications by @​dotMorten in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1264

### Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* @​bencemali made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* @​Copilot made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* @​dotMorten made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.38-alpha...v3.8.106-alpha

## 3.8.38-alpha

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1174

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1153

## New Contributors
* @​emmanuel-ferdman made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1145

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.8.38-alpha

Commits viewable in [compare
view](https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.10.91).
</details>

Updated
[Nerdbank.GitVersioning](https://github.com/dotnet/Nerdbank.GitVersioning)
from 3.7.115 to 3.10.91.

<details>
<summary>Release notes</summary>

_Sourced from [Nerdbank.GitVersioning's
releases](https://github.com/dotnet/Nerdbank.GitVersioning/releases)._

## 3.10.91

## What's Changed

* Retry file operations on access denied errors by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1408


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.85...v3.10.91

## 3.10.85

## What's Changed

* Avoid writing server.json multiple times in a single pack by @​AArnott
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1391

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.70...v3.10.85

## 3.10.70

## What's Changed

### Fixes

* Fix case insensitivity for the managed engine on git worktrees, and
implement for libgit2 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1334
* Fix native heap corruption in GitPackIndexMappedReaderTests by
@​AArnott in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1360

### Enhancements

* Add prerelease property to inheriting version.json files by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1317
* Add NBGV_SetCloudBuildVersionVars property to disable cloud build
variable output by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1324
* Add --what-if option to prepare-release command for simulating version
changes by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1242
* Build nbgv CLI tool for .NET 9 and 10 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1369


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.50...v3.10.70

## 3.10.44-alpha

## What's Changed

### Fixes

* Fix case insensitivity for the managed engine on git worktrees, and
implement for libgit2 by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1334

### Enhancements

* Add --what-if option to prepare-release command for simulating version
changes by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1242
* Add NBGV_SetCloudBuildVersionVars property to disable cloud build
variable output by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1324


### Dependency updates

* chore(deps): update dependency microsoft.build.locator to 1.11.2 by
@​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1304
* chore(deps): update dotnet monorepo by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1309
* Update dotnet monorepo by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1338


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.10.8-alpha...v3.10.44-alpha

## 3.10.8-alpha

## What's Changed
* Add prerelease property to inheriting version.json files by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1317


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.50...v3.10.8-alpha

## 3.9.50

## What's Changed
* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1279
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1281
* Automatically disable git engine for Dependabot environments by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1287
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1291
* Allow uppercase letters in pre-release version identifiers by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1293

## New Contributors
* @​micheloliveira-com made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1277

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.118...v3.9.50

## 3.9.37-alpha

## What's Changed
* Auto-disable git engine for GitHub Copilot environments by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1291


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.32-alpha...v3.9.37-alpha

## 3.9.32-alpha

## What's Changed

* Automatically disable git engine for Dependabot environments by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1284
* Add --what-if switch to nbgv tag command to preview tag names by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1287

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.17-alpha...v3.9.32-alpha

## 3.9.17-alpha

## What's Changed
* Fix `nbgv prepare-release` command to honor inheriting version.json
files by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1281


**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.9.15-alpha...v3.9.17-alpha

## 3.9.15-alpha

## What's Changed

* Add `versionHeightOffsetAppliesTo` property to version.json by
@​Copilot in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1279

## New Contributors
* @​micheloliveira-com made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1277

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.118...v3.9.15-alpha

## 3.8.118

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1174
* Catch a more general JsonException. by @​ANGEL-OF-DEV in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* Retarget links to migrated docs by @​bencemali in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* Check MSBuild items with case insensitivity by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1253
* Only do Android version check on applications by @​dotMorten in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1264

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1153
* Add support for stamping version on server.json for MCP servers with
0.0.0-placeholder replacement by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1270 and by
@​AArnott in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1271
* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1263

## Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* @​bencemali made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* @​Copilot made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* @​dotMorten made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* @​emmanuel-ferdman made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1145

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.8.118

## 3.8.106-alpha

## What's Changed

### Enhancements

* Add option to set / skip CloudBuildNumber by @​MattKotsenas in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1190
* Add Central Package Management (CPM) support to nbgv install command
by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* Add --public-release argument to nbgv get-version command by @​Copilot
in https://github.com/dotnet/Nerdbank.GitVersioning/pull/1245
* Invoke PrivateP2PCaching.proj fewer times by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1263

### Fixes

* Catch a more general JsonException. by @​ANGEL-OF-DEV in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* Retarget links to migrated docs by @​bencemali in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* Check MSBuild items with case insensitivity by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1213
* Fix inconsistent CLI output format for GitCommitDate by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1246
* Fix version height computed as 0 when project path has non-canonical
casing by @​Copilot in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1244
* When generating the GitCommitDate field in the AssemblyInfo for F#, d…
by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1253
* Only do Android version check on applications by @​dotMorten in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256
* Fix `nbgv set-version` to write to the best version.json file in scope
by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1264

### Other changes

* Update dependency Cake.Core to v5 by @​renovate[bot] in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1183

## New Contributors
* @​ANGEL-OF-DEV made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1191
* @​bencemali made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1193
* @​Copilot made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1208
* @​dotMorten made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1256

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.8.38-alpha...v3.8.106-alpha

## 3.8.38-alpha

## Fixes

* Don't try to disable CA2243 warnings in the generated version info
files for F# by @​Numpsy in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1174

## Enhancements

* Add msbuild-provided prerelease identifiers by @​AArnott in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1153

## New Contributors
* @​emmanuel-ferdman made their first contribution in
https://github.com/dotnet/Nerdbank.GitVersioning/pull/1145

**Full Changelog**:
https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.8.38-alpha

Commits viewable in [compare
view](https://github.com/dotnet/Nerdbank.GitVersioning/compare/v3.7.115...v3.10.91).
</details>

Updated
[NexusLabs.Framework.Analyzers](https://github.com/ncosentino/NexusLabs.Framework)
from 0.2.6 to 0.2.9.

<details>
<summary>Release notes</summary>

_Sourced from [NexusLabs.Framework.Analyzers's
releases](https://github.com/ncosentino/NexusLabs.Framework/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/ncosentino/NexusLabs.Framework/commits).
</details>

Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.53.0 to
1.63.0.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.63.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.63.0 -->

## What's Changed
### Other Changes
* fix(mocks): dispatch abstract indexers through the engine instead of
calling base by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6517
* feat(mocks): experimental compile-time internals access (#​6514 Tier
2) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6520
* feat(mocks): make the async-factory Returns alias available below
net9.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6518
* +semver:minor - feat(mocks): runtime auto-stubs for interfaces the
source generator cannot see by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6519
### Dependencies
* chore(deps): update tunit to 1.62.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6508
* chore(deps): update dependency mockolate to 3.4.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6512
* chore(deps): update dependency cliwrap to 3.10.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6513
* chore(deps): update dependency stackexchange.redis to 3.0.25 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6522
* chore(deps): update dependency brace-expansion to v5.0.9 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6523
* chore(deps): update dependency microsoft.build.utilities.core to v18
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6525


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.62.0...v1.63.0

## 1.62.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.62.0 -->

## What's Changed
### Other Changes
* fix(docs): make Mermaid lifecycle diagrams readable by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6485
* fix(mocks): strip nullable annotation from constructor dispatch
patterns by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6498
* fix(mocks): skip interfaces with inaccessible abstract members by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6502
* feat(mocks): accept an async factory in Returns() on async members by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6503
* fix(mocks): report TM006 instead of CS1729 for unsubclassable classes
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6501
* fix(mocks): emit the setup surface into the globally-imported
namespace by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6504
* fix(mocks): reference TUnit.Mocks once in snapshot test compilations
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6506
* fix(mocks): make generated identifier sanitization injective by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6507
### Dependencies
* chore(deps): update tunit to 1.61.38 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6479
* chore(deps): update dependency brace-expansion to v5.0.8 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6478
* chore(deps): update dependency cliwrap to 3.10.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6482
* chore(deps): bump postcss from 8.5.10 to 8.5.22 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6480
* chore(deps): update dependency fscheck to 3.3.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6486
* chore(deps): update dependency minimatch to v10.2.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6490
* chore(deps): update actions/stale action to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6496
* chore(deps): update microsoft.testing to 2.3.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6499
* chore(deps): update mstest to 4.3.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6500


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.38...v1.62.0

## 1.61.38

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.38 -->

## What's Changed
### Other Changes
* fix: apply 'unmanaged' constraint handling to remaining source
generators by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6474
* feat: expose data source attributes on TestContext by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6477
### Dependencies
* chore(deps): update tunit to 1.61.35 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6475


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.35...v1.61.38

## 1.61.35

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.35 -->

## What's Changed
### Other Changes
* fix(mocks): omit 'struct' constraint when type parameter has
'unmanaged' constraint by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6473
### Dependencies
* chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6466
* chore(deps): update tunit to 1.61.29 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6467
* chore(deps): update dependency verify.tool to v0.8.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6470
* chore(deps): update dependency docusaurus-plugin-llms to ^0.5.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6472


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.29...v1.61.35

## 1.61.29

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.29 -->

## What's Changed
### Other Changes
* perf: remove EnumerableAsyncProcessor dependency by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6465
### Dependencies
* chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6462
* chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6461
* chore(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6460
* chore(deps): update dependency microsoft.kiota.abstractions to v2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6464
* chore(deps): update tunit to 1.61.23 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6463


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.23...v1.61.29

## 1.61.23

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.23 -->

## What's Changed
### Other Changes
* fix(mocks): emit 'where T : default' for interface-constrained generic
methods by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6458
### Dependencies
* chore(deps): update tunit to 1.61.15 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6450
* chore(deps): update actions/checkout action to v7.0.1 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6453
* chore(deps): update verify to 31.26.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6454
* chore(deps): update verify to 31.27.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6457
* chore(deps): update react to ^19.2.8 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6459


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.15...v1.61.23

## 1.61.15

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.15 -->

## What's Changed
### Other Changes
* feat: Allow disabling the automatic html report upload to
upload-artifacts@​v7 by @​Crashdummyy in
https://github.com/thomhurst/TUnit/pull/6447
* fix: stop retrying artifact upload on non-retryable status codes by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6449
### Dependencies
* chore(deps): update tunit to 1.61.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6437
* chore(deps): update verify to 31.24.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6438
* chore(deps): update dependency
opentelemetry.instrumentation.aspnetcore to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6440
* chore(deps): update verify to 31.25.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6442
* chore(deps): update dependency docusaurus-plugin-llms to ^0.5.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6443
* chore(deps): update opentelemetry to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6441

## New Contributors
* @​Crashdummyy made their first contribution in
https://github.com/thomhurst/TUnit/pull/6447

**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.61.0...v1.61.15

## 1.61.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.61.0 -->

## What's Changed
### Other Changes
* docs: revamp README with feature showcase and auto-updating benchmarks
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6430
* docs: align docs homepage messaging with revamped README by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6431
* fix(engine): emit ECMA-335 metadata-format type names in
TestMethodIdentifierProperty by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6433
* fix(benchmarks): make SetupTeardownTests JSON tests Native AOT
compatible by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6434
* Organize repository into conventional .NET layout by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6435
### Dependencies
* chore(deps): update dependency polyfill to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6418
* chore(deps): update dependency tunit.aspire to 1.6* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6419
* chore(deps): update tunit to 1.6* by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6420
* chore(deps): update dependency polyfill to 11.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6421
* chore(deps): update dependency polyfill to 11.0.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6422
* chore(deps): update verify to 31.24.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6424
* chore(deps): update microsoft.build to 18.8.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6426
* chore(deps): update dependency microsoft.net.stringtools to 18.8.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6425
* chore(deps): update actions/setup-dotnet action to v6 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6427
* chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6429
* chore(deps): update opentelemetry to 1.17.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6432


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.60.0...v1.61.0

## 1.60.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.60.0 -->

## What's Changed
### Other Changes
* feat: cross-process test report aggregation — merged HTML report +
single GitHub summary by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6415
### Dependencies
* chore(deps): update tunit to 1.59.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6398
* chore(deps): update verify to 31.24.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6399
* chore(deps): update microsoft.testing to 2.3.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6401
* chore(deps): update mstest to 4.3.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6402
* chore(deps): update actions/setup-node action to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6403
* chore(deps): update dependency microsoft.net.test.sdk to 18.8.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6404
* chore(deps): update dependency microsoft.net.test.sdk to 18.8.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6405
* chore(deps): update dependency fsharp.core to 10.1.302 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6406
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.302 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6407
* chore(deps): update dependency microsoft.entityframeworkcore to
10.0.10 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6410
* chore(deps): update dependency dotnet-sdk to v10.0.302 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6409
* chore(deps): update dependency system.commandline to 2.0.10 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6412
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.302 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6411
* chore(deps): update microsoft.aspnetcore to 10.0.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6413
* chore(deps): update microsoft.extensions to 10.0.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6414
* chore(deps): update microsoft.extensions to 10.8.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6416
* chore(deps): update dependency polyfill to v11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6417


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.59.0...v1.60.0

## 1.59.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.59.0 -->

## What's Changed
### Other Changes
* Fix typed MethodDataSource provider instances by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6378
* Fix instance MethodDataSource isolation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6379
* fix(mocks): CS9262 in generated mock members on VS 17.14 (Roslyn 4.14)
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6392
* Remove EqualTo alias documentation by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6396
* fix(aspnetcore): guard hosted-service stop against concurrent double
Host.StopAsync by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6397
* Add single-item assertion chaining by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6395
* Improve test framework migrations by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6381
* Add -f/--framework support to TUnit template with .NET Framework
handling by @​thomhurst with @​Copilot in
https://github.com/thomhurst/TUnit/pull/6262
### Dependencies
* chore(deps): update tunit to 1.58.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6351
* chore(deps): update dependency tunit.core to 1.58.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6352
* chore(deps): update dependency picomatch to v4.0.5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6354
* chore(deps): update dependency testcontainers.postgresql to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6356
* chore(deps): update dependency testcontainers.redis to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6357
* chore(deps): update dependency testcontainers.kafka to 4.13.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6355
* chore(deps): update dependency gitversion.tool to v6.8.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6359
* chore(deps): update dependency typescript to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6372
* chore(deps): update mstest to 4.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6374
* chore(deps): update dependency messagepack to 3.1.8 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6376
* chore(deps): update dependency opentelemetry.instrumentation.runtime
to 1.16.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6380
* chore(deps): update dependency vogen to 8.0.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6382
* chore(deps): update dependency gitversion.tool to v6.8.2 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6384
* chore(deps): update dependency npgsql.entityframeworkcore.postgresql
to 10.0.3 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6385
* chore(deps): update docusaurus to v3.10.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6386
* chore(deps): update dependency stackexchange.redis to 3.0.17 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6387
* chore(deps): update dependency dompurify to v3.4.12 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6389
* chore(deps): update dependency svgo to v4.0.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6390
* chore(deps): update dependency nsubstitute to v6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6394
* chore(deps): update verify to 31.24.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6367
* chore(deps): update microsoft.testing by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6369


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.58.0...v1.59.0

## 1.58.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.58.0 -->

## What's Changed
### Other Changes
* feat(aspire): opt-in live forwarding of resource logs into test output
(#​6341) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6345
* fix(aspire): fail fast on Finished-state crashes during startup
(#​6342) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6346
* fix(engine): keep per-test timeout token source alive through teardown
(#​6339) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6349
* feat(aspire): resource-diagnostics helpers + retained log buffer
(#​6343) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6350
* feat(aspire): surface exception detail in routed OTLP logs (#​6347) by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6348
### Dependencies
* chore(deps): update tunit to 1.57.17 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6344


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.17...v1.58.0

## 1.57.17

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.17 -->

## What's Changed
### Other Changes
* fix(engine): reset test cancellation token before After hooks on
timeout path (#​6339) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6340
### Dependencies
* chore(deps): update tunit to 1.57.14 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6336


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.14...v1.57.17

## 1.57.14

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.14 -->

## What's Changed
### Other Changes
* fix(engine): apply --treenode-filter to --list-tests by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6334
* feat(aspire): dump resource error logs on test failure + warn on
missing telemetry wiring by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6323
### Dependencies
* chore(deps): update dependency stackexchange.redis to 3.0.11 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6324
* chore(deps): update tunit to 1.57.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6322
* chore(deps): update dependency brace-expansion to v5.0.7 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6326
* chore(deps): update dependency polyfill to 10.11.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6327
* chore(deps): update dependency polyfill to 10.11.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6329
* chore(deps): update dependency polyfill to 10.11.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6330
* chore(deps): update dependency polyfill to 10.11.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6331
* chore(deps): update dependency serialize-javascript to v7.0.7 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6333
* chore(deps): update dependency gitversion.tool to v6.8.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6335


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.57.0...v1.57.14

## 1.57.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.57.0 -->

## What's Changed
### Other Changes
* perf(sourcegen): consolidate per-file ModuleInitializers into merged
.cctor (#​6226) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6286
* fix: resolve CS0121 IsEqualTo ambiguity on .NET 8 SDK (#​6296) by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6313
* chore(docs): apply Codacy markdownlint fixes by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6284
* fix(mocks): generate mock for qualified-name X.Mock() calls (#​6298)
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6314
### Dependencies
* chore(deps): update tunit to 1.56.35 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6306
* chore(deps): update dependency stackexchange.redis to 3.0.7 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6307
* chore(deps): update dependency opentelemetry.instrumentation.http to
1.16.0 by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6308
* chore(deps): update dependency
opentelemetry.instrumentation.aspnetcore to 1.16.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6309
* chore(deps): update dependency qs to v6.15.3 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6310
* chore(deps): update dependency polyfill to 10.11.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6312
* chore(deps): update dependency polyfill to 10.11.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6311
* chore(deps): bump http-proxy-middleware from 2.0.9 to 2.0.10 in /docs
by @​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6303


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.56.35...v1.57.0

## 1.56.35

<!-- Release notes generated using configuration in .github/release.yml
at v1.56.35 -->

## What's Changed
### Other Changes
* feat(aspire): tear down Aspire on test-run abort via session
cancellation token by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6292
### Dependencies
* chore(deps): update tunit to 1.56.25 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6294
* chore(deps): update dependency
microsoft.visualstudio.threading.analyzers to v18 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6297
* chore(deps): update dependency microsoft.net.test.sdk to 18.7.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6300
* chore(deps): update dependency microsoft.playwright to 1.61.0 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6302
* chore(deps): update actions/cache action to v6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6301
* chore(deps): update dependency azure.storage.blobs to 12.29.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6304


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.56.25...v1.56.35

## 1.56.25

<!-- Release notes generated using configuration in .github/release.yml
at v1.56.25 -->

## What's Changed
### Other Changes
* feat(aspire): actionable diagnostics when resources fail to start by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6293
### Dependencies
* chore(deps): update tunit to 1.56.18 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6285
* chore(deps): update aspire to 13.4.6 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6287
* chore(deps): update dependency mockolate to 3.3.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6291


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.56.18...v1.56.25

## 1.56.18

<!-- Release notes generated using configuration in .github/release.yml
at v1.56.18 -->

## What's Changed
### Other Changes
* fix(mocks): mock deep interface hierarchies (#​6264) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6283
* feat: artifact retention for auto-uploaded HTML report (#​6266) by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6270
* fix(mocks): forward asymmetric `new`-hidden property slots
per-accessor (#​6263) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6281
* fix: honor OverloadResolutionPriority on net8 consumers (#​6276,
#​6280) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6282
### Dependencies
* chore(deps): update tunit to 1.56.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6259
* chore(deps): update dependency streamjsonrpc to 2.25.29 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6258
* chore(deps): update aspire to 13.4.5 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6267
* chore(deps): bump launch-editor from 2.12.0 to 2.14.1 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6268
* chore(deps): bump @​babel/core from 7.28.5 to 7.29.7 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6269
* chore(deps): update dependency dompurify to v3.4.11 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6271
* chore(deps): update dependency serialize-javascript to v7.0.6 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6272
* chore(deps): update actions/checkout action to v7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6277
* chore(deps): update verify to 31.20.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6278
* chore(deps): bump webpack-dev-server from 5.2.4 to 5.2.5 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6273


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.56.0...v1.56.18

## 1.56.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.56.0 -->

## What's Changed
### Other Changes
* fix(aspnetcore): serialize WithWebHostBuilder to stop
_derivedFactories race (flaky disposal NRE) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6251
* fix(mocks): wrap a real object whose class has no parameterless ctor
(#​6253) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6255
* fix(mocks): implement `new`-hidden base interface members in wrapper
(#​6252) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6256
* fix(mocks): mocking a method with more params than Func/Action arity
(#​6254) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6257
### Dependencies
* chore(deps): update tunit to 1.55.2 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6248
* chore(deps): update aspire to 13.4.4 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6249
* chore(deps): update dependency stackexchange.redis to v3 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6250


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.55.2...v1.56.0

## 1.55.2

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.2 -->

## What's Changed
### Other Changes
* fix(aspire): publish TUnit.Aspire.Core package (#​6246) by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6247
### Dependencies
* chore(deps): update tunit to 1.55.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6245


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.55.0...v1.55.2

## 1.55.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.0 -->

## What's Changed
### Other Changes
* feat(aspire): add TUnit.Aspire.Core without TUnit metapackage
dependency (#​5471) by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6243
* fix(analyzers): scope TUnit0031 async-void rule to tests and hooks
(#​6190) by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6244
### Dependencies
* chore(deps): update dependency streamjsonrpc to 2.25.28 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6232
* chore(deps): update tunit to 1.54.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6233
* chore(deps): bump joi from 17.13.3 to 17.13.4 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6234
* chore(deps): update dependency polyfill to 10.9.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6238
* chore(deps): update _tunitpolyfillversion to 10.9.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6237
* chore(deps): update dependency polyfill to 10.10.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6242
* chore(deps): update _tunitpolyfillversion to 10.10.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6241


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.54.0...v1.55.0

## 1.54.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.54.0 -->

## What's Changed
### Other Changes
* Generate collection-shape drill-in overloads (#​6185) by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6218
* feat(mocks): setup/verify on secondary interfaces of multi-type mocks
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6230
* perf: reduce allocations in source-gen test building hot paths by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6228
* perf: shrink generated TestEntry builder IL via shared TUnit.Core
factory helpers by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6231
### Dependencies
* chore(deps): update tunit to 1.53.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6199
* chore(deps): update verify to 31.19.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6200
* chore(deps): update dependency messagepack to 3.1.7 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6203
* chore(deps): update dependency fsharp.core to 10.1.301 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6202
* chore(deps): update dependency microsoft.entityframeworkcore to 10.0.9
by @​thomhurst in https://github.com/thomhurst/TUnit/pull/6205
* chore(deps): update dependency dotnet-sdk to v10.0.301 by @​thomhurst
in https://github.com/thomhurst/TUnit/pull/6204
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.301 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6206
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.301 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6207
* chore(deps): update microsoft.aspnetcore to 10.0.9 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6209
* chore(deps): update dependency system.commandline to 2.0.9 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6208
* chore(deps): update microsoft.extensions by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6211
* chore(deps): update dependency dompurify to v3.4.9 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6213
* chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /docs by
@​dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6210
* chore(deps): update dependency polly to 8.7.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6214
* chore(deps): update dependency microsoft.net.stringtools to 18.7.1 by
@​thomhurst in https://github.com/thomhurst/TUnit/pull/6215
* chore(deps): update microsoft.build to 18.7.1 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6216
* chore(deps): update opentelemetry to 1.16.0 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6217
* chore(deps): update dependency dompurify to v3.4.10 by @​thomhurst in
https://github.com/thomhurst/TUnit/pull/6229


**Full Changelog**:
https://github.com/thomhurst/TUnit/compare/v1.53.0...v1.54.0

Commits viewable in [compare
view](https://github.com/thomhurst/TUnit/compare/v1.53.0...v1.63.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nick Cosentino <nbcosentino@gmail.com>
This was referenced Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[TUnit.Mocks] Get<T>() can't be configured for T inaccessible to the calling assembly (unlike NSubstitute's runtime-proxy auto-recursion)

1 participant