I have used exec task inside msbuild and achieved the same.. for the rest like stopping / starting host instances, I use sdc tasks..

 

<Target Name="BuildSolutions">

   <Exec Command='devenv.com  /build $(BuildType) "c:\customer.btproj"'         >

</Target>

 

full detail here;

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets ="BuildSolutions;SuccessLog">

<PropertyGroup >

<MsgBuildFailed>Failed Build for </MsgBuildFailed>

<MsgBuildSuccess>success Build for </MsgBuildSuccess>

</PropertyGroup>

<Target Name="BuildSolutions">

<WriteLinesToFile File="$(HighLevelErrFile)" Lines="Compiling Biztalk Projects..." Overwrite="false"/>

<Message Importance ="normal" Text ="start build "></Message>

<Exec Command='devenv.com /build Release "c:\abc.sln"'

Outputs='c:\abc.sln' >

<Output TaskParameter="Outputs" PropertyName="BuildDone" />

</Exec >

<OnError ExecuteTargets ="HandleErr" />

</Target>

<Target Name="SuccessLog">

<Message Importance ="high" Text ="$(MsgBuildSuccess) : $(BuildDone)" ContinueOnError ="true"></Message>

<WriteLinesToFile File ="$(HighLevelErrFile)" Lines="$(MsgBuildSuccess) : $(BuildDone)" ContinueOnError="true"></WriteLinesToFile>

</Target>

<Target Name="HandleErr">

<Message Importance ="high" Text ="$(MsgBuildFailed) : $(BuildDone)" ContinueOnError ="true"></Message>

<WriteLinesToFile File ="$(HighLevelErrFile)" Lines="$(MsgBuildFailed) : $(BuildDone)" ContinueOnError="true"></WriteLinesToFile>

</Target>

</Project>