In the examples, maybe the instance of IApiVersionDescriptionProvider will stay around in memory because of the temporary service provider is not disposed.
Current code:
// note: that we have to build a temporary service provider here because one has not been created yet
var provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
Suggested code:
// note: that we have to build a temporary service provider here because one has not been created yet
using (var serviceProvider = services.BuildServiceProvider())
{
var provider = serviceProvider.GetRequiredService<IApiVersionDescriptionProvider>();
... other code ...
}