I've seen several projects where the build changes the code to customise it for each target environment. This always seems to make things much more complicated than they need be, and introduces a risk that the team may not be able to tell which version is on which box. At a minimum it involves building multiple, near-identical copies of the software which then have to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. I've worked on a team where every change had to be checked in for a full build cycle, which meant that our testers were kept idle whenever we made minor setting adjustments. I've worked on a team where the system administrators insisted on rebuilding from scratch for production, which meant that we had no absolute proof that the version in production was the one that had been through testing. And so on.
Environment-specific details should be held in the relevant environment, perhaps in the container settings, in a known file, or in the path.
To start with, it suggests that the team either hasn't thought through its design or, worse, that it has but can't follow through.