I'm maintaining a webforms application for several different clients in Visual Studio 2008. Each client has their own separate web.config file. We are using config transformation when deploying which works great.
There are many developers currently working on this project, and while developing each developer needs to have the configuration values for a specific client. Right now, what we are doing is that each one of us, has their own version of web.config locally, and we just try to be careful not to check in the web.config file.
This approach of course has several drawbacks. We need to do this manually, which is annoying, we need to be really careful not to check in the config files since it could cause trouble for the rest of the developers, it's cumbersome to add a new value to the config, etc.
I'd like to transform the config files when building from visual studio, so we can chose which file to take the configuration values from, without having to manually edit web.config.
I've been looking in the web for a while, but the best thing i found so far is this: http://www.codeproject.com/Articles/399002/Project-Build-Web-config-transformation
Which is not working for me, it gives me a build error saying it can't copy Web.config_output because the file is missing.
By default tools like SlowCheetah and other config transform technologies use the
$(Configuration)
to figure out the name of the transformation to apply. You could take theslowcheetah.targets
file and edit it to take$(username)
which will pick up the standard windows logged on user name if you're building inside visual studio. You could use a condition to apply the change specifically when'$(BuildingInsideVisualStudio)'='true'
.This will require you to do some work with MsBuild target files, but the end result would be that your developers can check in a
web.jesse.houwing.config
(in my case) and that of that file is there, their transformation will be applied instead of the standard release or debug transformation.As for a good starting point, look at SlowCheetah.