How to override the connection string and target database of a database project

Problem:

I need to override the connection string and target database of a database project built with Team Build.

Solution:

Pass the TargetConnectionString and TargetDatabase parameters to team build.

Explanation:

Although Team Build in 2010 is Windows Workflow based at the end of the day MSBuild is still being called to perform the actual build. Project files in Visual Studio are just MSBuild project files.  Not only does this make building Visual Studio projects and solution very easy but it also allows us to pass parameters to our builds.  Any properties set in a project file can be overwritten by passing in parameters to MSBuild.  The parameters we need to override are TargetConnectionString and TargetDatabase.  On the Process Tab of the Team Build 2010 Build Definition wizard you can use the MSBuild Arguments parameter to pass in parameters to MSBuild.  For example I can pass in the following to override the values in the project file,

/p:TargetConnectionString="Data Source=.;Integrated Security=True;Pooling=False" /p:TargetDatabase=MyDatabase

This allows me to keep the project file in version control set to the values used for development and override them for build when I deploy to different environments. 

Comments are closed