My point is, just like anything else, we have a heuristic way to define what the behavior is and we should allow user to override such w/o redeploy the application.   AppSettings is a natural place for this kind of thing.

For instance, we have heuristic way to figure out what type of builder or what sln/csproj to build.   In addition, we do let user define that explicitly in the appsettings.