Note the addition of "Condition" to each reference in the code below. These are an addition to the current project file. Without this, if you try to e.g. build with "msbuild" on the command-line, it will build both of the referenced projects. This results in a build failure since it will try to build AllInOneICU for a non-ICU build. With the conditions in place, it will only build AllInOneICU for an ICU build, and AllInOne for a non-ICU build.
I'm using this with VS2013, derived from the VS2010 project. It likely affects all VS project versions using msbuild.
<ProjectReference Include="..\AllInOne\AllInOne.vcxproj" Condition="'$(Configuration)'=='Debug' Or '$(Configuration)'=='Release'">
<ProjectReference Include="..\AllInOne\AllInOneWithICU.vcxproj" Condition="'$(Configuration)'=='Debug with ICU' Or '$(Configuration)'=='Release with ICU'">
msbuild Xalan.sln "/p:Configuration=Debug /p:Platform=x64 /t:XalanExe
Without the above change, this will fail.