DI014

Root Service Provider Not Disposed

root providers from `BuildServiceProvider()` that are never disposed.

Default severity: Warning · Code fix: Yes

Why it matters

singleton disposables at root scope may never be cleaned up.

Locking the front door but leaving all the taps running still wastes the whole house.

README problem example

var services = new ServiceCollection();
var provider = services.BuildServiceProvider();
var service = provider.GetRequiredService<IMyService>();

README better pattern

using var provider = services.BuildServiceProvider();
var service = provider.GetRequiredService<IMyService>();

Yes. Adds disposal pattern where safe.

Repo sample extraction

Examples pulled from the sample app

Open full sample file

Sample app warning case

    public void BadExample()
    {
        var services = new ServiceCollection();
        
        // ⚠️ BAD: Root provider is not disposed
        // Disposable singletons will not be disposed
        var provider = services.BuildServiceProvider();
        
        var service = provider.GetService<IServiceScopeFactory>();
    }

Sample app safe pattern

    public void GoodExample()
    {
        var services = new ServiceCollection();

        // ✅ GOOD: Provider disposed via 'using'
        using var provider = services.BuildServiceProvider();
        
        var service = provider.GetService<IServiceScopeFactory>();
    }