That is relatively easy to achieve. It requires hand editing of some of your project files. First create clone of Project B, than open new csproj file in an editor and change project GUID to a new one (do not confuse it with project type Guid) and to avoid future mistakes change new project file name as well.
In Project A the only changes which are required are related to Project B csproj references where we want to make them conditional on some environment / build settings and depending on them choose production or developer Project B reference.
Below I have created copy of project references section of one of CppSharp projects. The project reference to CppSharp project was splitted into two alternatively included references to CppSharp.csproj when DevelopmentBuild environment or MSBuild property is false and reference to CppSharp.Dev.csproj which is included when DevelopmentBuild is set to True.
<ItemGroup>
<ProjectReference Include="..\Core\CppSharp.csproj" Condition"$(DevelopmentBuild) != 'True'">
<Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A3}</Project>
<Name>CppSharp</Name>
</ProjectReference>
<ProjectReference Include="..\CoreDev\CppSharp.Dev.csproj" Condition"$(DevelopmentBuild) == 'True'">
<Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A4}</Project>
<Name>CppSharp</Name>
</ProjectReference>
<ProjectReference Include="..\AST\CppSharp.AST.csproj">
<Project>{BC4C5C41-A8AF-EBE5-5135-249C3D77B768}</Project>
<Name>CppSharp.AST</Name>
</ProjectReference>
<ProjectReference Include="..\Runtime\CppSharp.Runtime.csproj">
<Project>{189FF169-0498-10BC-2DCA-F5401922F0C7}</Project>
<Name>CppSharp.Runtime</Name>
</ProjectReference>
<ProjectReference Include="..\..\build\vs2015\projects\CppSharp.Parser.CLI.vcxproj">
<Project>{C75EB680-33C0-938E-BC2D-DA40288ECA4D}</Project>
<Name>CppSharp.Parser.CLI</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />