Why it matters
BuildServiceProvider copies the descriptor list into the provider it returns, and a host builder does the same when it builds. Every mutation after that point writes into a collection nothing reads again. There is no error and no warning at run time — the service either fails to resolve with InvalidOperationException: No service for type 'X' has been registered, or silently resolves to the registration the build did capture, so a Replace or a test-time override appears to be ignored. It is a favourite failure of integration-test fixtures and of Program.cs files where a late builder.Services line drifts below builder.Build().
The photo was already taken. Waving after the shutter clicks does not put you in the picture.