The msbuild way of doing this would be to use the Configuration Manager
(Build -> Configuration Manager
) in Visual Studio to map the projects to the solution config/platform.
In the Configuration Manager
:
select ARM
as the Active Solution Platform
and uncheck Build
for all the *.UnitTests
projects and ensure the other projects have Build
checked.
select x86
as the Active Solution Platform
check/uncheck Build
based on which projects you want to build.
This will mean that whenever you build your solution for Platform=ARM
, all the projects except for your *.UnitTests
, will build. And similarly for Platform=x86
.
You can read more about it here.
Update:
If you need more custom logic to choose projects to build, then you could create a new top level build file like:
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(Platform)' == 'ARM'">
<ARMProjects Include="abc\*.csproj" Exclude="**\*.UnitTests.csproj"/>
<ARMProjects Include="def\*.csproj" Exclude="**\*.UnitTests.csproj"/>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x86'">
<!-- Create a group named X86Projects and select the projects as you need to -->
</ItemGroup>
<Target Name="Build">
<MSBuild Project="@(ARMProjects)" Targets="Build" Condition="'$(Platform)' == 'ARM'"/>
<MSBuild Project="@(X86Projects)" Targets="Build" Condition="'$(Platform)' == 'x86'"/>
</Target>
</Project>
Tweak the build targets or the projects selected according to your needs.