Quantcast
Channel: Brennan's Blog » msbuild
Viewing all articles
Browse latest Browse all 10

Post Build Deployments with MSBuild

$
0
0

MSBuild is a powerful tool for automation but as the name implies, it is a tool primarily for compiling code. Beyond the initial build MSBuild can also be used in preparation for deployments. To assist with the deployment of websites Microsoft produced Web Deployment Projects which carry out a series of tasks to build a website with the option to replace configuration sections which is a very useful feature. Once I have compiled a project I have multiple deployment targets so I wanted to just reconfigure a project in preparation for a deployment and I found a good way get this done outside of a web deployment project.

Replacing configuration sections is handled by the ReplaceConfigSections task which can be accessed in the Microsoft.WebDeployment.Tasks.dll assembly. You just have to pull it into your own script with the UsingTask directive which is shown in the example script.

In the script below WDTargetDir property defines the directory where the Web.config file must exist. The next two properties are optional and are self explanatory. Finally the items in the WebConfigReplacementFiles group which are processed when the ReplaceConfigSections task is executed. The configuration file for the replacement section can be a relative path set by the WDTargetDir property. This sample shows how appSettings.config is used when the $(Configuration) is not defined and appSettings.Release.config when Release is defined. This distinction is controlled with the Condition attribute.

I am now making use of the ReplaceConfigSections task as a part of my continuous integration process which employs a build server which is integrated with my source control system. When I commit my updates the build server pulls the updates, compiles and tests my changes. Once I know the project has been built successfully and has passed my tests I can then safely run the deployment task for the target platform with various targets like development, staging and production. With this automation in place it makes it possible to eliminate human error and a good deal of manual work.


Viewing all articles
Browse latest Browse all 10

Trending Articles