.net – Differences between Visual Studio (.sln) build runner and MSBuild

continuous integrationmsbuildnetteamcityvisual studio

I'm trying to set TeamCity to do a CI using .Net and configuring build runners I have:

  1. Visual Studio (sln)
  2. MSBuild
  3. Visual Studio 2003

What's the difference? Why three build to work on the same type of project? (With the exception of 2003 which is only for 2003 I believe, Why?)

Taking the issue, we have this build runners for .exe files:

  1. .NET Process Runner
  2. Command Line

The "Command Line" build runner not works with any .net assembly? Why the .Net Process Runner?

Best Answer

Visual Studio (sln)
If your solution is small and you are not required to do fancy things you can use Visual Studio (sln) build runner. It does exactly the same thing as when you do Project->Build (from VS menu). This option is very easy to configure, a few clicks and your CI server compiles your solution.

MSBuild
If you need to do more advanced scenarios, apart from simple compilation, like apply different config files, insert transformed values into config file, deploy binaries etc, you would select MSBuild option. You will know when you need to use this, simply because sln builder will not be capable of doing stuff. This option requires some knowledge of build scripting language, which is a task-based and xml-like.