title: Xamarin Shared Projects vs Portable class libraries
body: <p>I am trying to figure out which is the better way to go for our project. </p>
  
  <p>PCL Library or Shared Project by Xamarin. </p>
  
  <p>In the <a href="http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/">Xamarin documentation link here</a> it says that a rule of thumb is to choose shared project when we will not share the library. The shared project can be written with #if's to make sure it works with multiple platforms - this also causes some issues with refactoring #ifs not active.</p>
  
  <p>Yet I have a gut feeling it is not right to put this code to a shared class. If a code that is to be available to Windows, Android and IOS mobile platforms is using a shared project instead of PCL - it means we are using #ifs inside shared project instead of writing platform specific code in a platform specific project. </p>
  
  <p>This is trying to make support of non PCL items via #ifs and making the shared code more complex and harder to maintain. Shouldn't this be the work to be done by Xamarin for improving .NET PCL codebase? </p>
  
  <p>And also this means we are putting platform specific features in the shared project and not the platform specific project - i.e. hiding complexity for a specific platform from the platform project itself - which feels wrong in terms of architecture.</p>
  
  <p>Am I right (in that case I am conflicting with Xamarin documentation) or am I missing something?</p>