I have never really been too actively involved with the build part of setting up continuous deployment environment, as such, I have not had too much exposure to MsBuild.exe. OK, I have done a bit with Nant.exe before, but MsBuild is still pretty novel to me.
Anyway, I decided I needed a small demo concept to see if I could get something up and running, and what I decided to have a go at was the following:
- Build entire solution
- Run the unit tests
The first issue I had was that solution files are not in MsBuild format. Mmmm how strange. The thing is this doesn’t really matter, there is nothing to stop you from creating a custom MsBuild file, which just has to be a valid msbuild file.
Here is what my solution structure looked like:
Like I say, all I wanted to do was build the solution and run the tests.
So without further ado, let's see what my msbuild file ended up looking like, shall we:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Run">
<CallTarget Targets="BuildSolution" />
<CallTarget Targets="RunTests" />
<Message Text="BuildSolution called." />
<Output TaskParameter="Include" ItemName="TestAssembly" />
ToolPath="C:\Program Files (x86)\NUnit 2.6.2\bin"
I did actually get this from someone's blog, but I seem to have lost the link, so if you think you know which one it was, please let me know, and I’ll put a link to it here.
I don’t think that is too bad, and that hard to understand, we simply do these things:
- Setup some solution properties
- Use the MsBuild msbuild task to build the solution
- Use the MsBuild Community Tasks to run Nunit (making sure we point to the version we want to use)
- The build files and test results will be in a folder names OutDir after we run this custom msbuild file
In order to run this custom msbuild file, we simply use the following command line:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe NUnit.MsBuildDemo.build /t:Run
MsBuild Community Tasks
The MsBuild Community Tasks are awesome and they have many many useful MsBuild tasks in them, I would encourage all of you to check them out at:
As always here is a small demo project: