Oprócz odpowiedzi @ Stuarta (co jest poprawne), chcę opublikować drugie obejście problemu, które znalazłem, pozwala mi osiągnąć mój pożądany scenariusz (zespół PCL testowalny na Mac OS i Windows).
To obejście opiera się na Xamarin Studio 4.0.5 (lub nowszym), w którym wprowadzono obsługę symboli wieloznacznych.
W szczególności podczas kompilacji w systemie Windows kompiluję PCL i dodaje do niego odniesienie do projektu z zespołu testowego. W systemie Mac OS kompiluję "PCL" (teraz nie ma prawdziwego wsparcia PCL), ale pozostawiam to nietknięte z zestawu testowego. Zamiast tego, wieloznacznik obejmuje cały kod z projektu PCL do zestawu testowego, więc mam kod test + w zespole testowym na OS X.
Wymaga to trochę magii MSBuild (podobna sztuczka używana do przełączania odniesień MvvmCross między Windows i OS Wersja X). Uwzględnienie tego .targets plik na szczycie swoich projektów:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<MvvmCrossPlatform>VS2012</MvvmCrossPlatform>
<PclSupport>true</PclSupport>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<MvvmCrossPlatform>XS-iOS-Mac</MvvmCrossPlatform>
<PclSupport>false</PclSupport>
</PropertyGroup>
</Project>
Następnie w jednostce testowej .csproj:
<ItemGroup Condition=" '$(PclSupport)' == 'false' ">
<Compile Include="..\RowingInMotion.Mobile.Backend\**\**.cs">
<Link>_Inlined\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
<Choose>
<When Condition=" '$(PclSupport)' == 'true' ">
<ItemGroup>
<ProjectReference Include="..\RowingInMotion.Mobile.Backend\RowingInMotion.Mobile.Backend.csproj">
<Project>{0B448743-182C-4ADC-8E97-7F9E7EF3A03A}</Project>
<Name>RowingInMotion.Mobile.Backend</Name>
</ProjectReference>
</ItemGroup>
</When>
</Choose>
pamiętać, że musiałem użyć Wybierz skonstruować, aby ProjectReference warunkowa, to wydaje się, że użycie warunku w grupie pozycji nie powoduje, że Visual Studio i Xamarin Studio ładują/ignorują odniesienie do projektu. Wydaje się również, że Xamarin Studio nie rozszerza prawidłowo instrukcji %(RecursiveDir)...
, więc pliki zachowują swoje nieprzyjemne nazwy plików (nie, żebym się tym przejmował, o ile są ukryte w folderze _Inlined).