The way I have been controlling the output path, is by adjusting the XML of the project specified output path to conditional locations:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath Condition=" '$(TeamBuildOutDir)'=='' ">..\bin\Release\AddIns\LanPortal\</OutputPath>
<OutputPath Condition=" '$(TeamBuildOutDir)'!='' ">$(TeamBuildOutDir)$(RelatedBuildDiretory)AddIns\LanPortal\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
The visual studio IDE only reveals one of the two output locations and gives no indication that I've made the edit. But when msbuild sees that setup, it understands.
p.s. this is my take for VS2008. It should be the same for VS2010 as well (for both C# and C++ projects)