DI016

BuildServiceProvider Misuse

`BuildServiceProvider()` calls while composing registrations (for example in `ConfigureServices`, `IServiceCollection` extension registration methods, or registration lambdas).

Default severity: Warning · Code fix: No

Why it matters

building a second provider during registration can duplicate singleton instances and produce lifetime inconsistencies.

If you set up a second classroom register halfway through, children can end up counted twice and rules become muddled.

README problem example

public static IServiceCollection AddFeature(this IServiceCollection services)
{
    var provider = services.BuildServiceProvider();
    var options = provider.GetRequiredService<IMyOptions>();
    return services;
}

README better pattern

public static IServiceCollection AddFeature(this IServiceCollection services, IMyOptions options)
{
    // Use provided dependencies/options without creating a second container
    return services;
}

No.

Repo sample extraction

Examples pulled from the sample app

Open full sample file

Sample app warning case

    public static void RegisterBad(IServiceCollection services)
    {
        using var provider = services.BuildServiceProvider();
        _ = provider.GetService(typeof(object));
    }

Sample app allowed pattern

    public static IServiceProvider CreateProvider(IServiceCollection services)
    {
        return services.BuildServiceProvider();
    }