Notes on Using Various PCL Profiles with Xamarin

posted on 16 Apr 2014 | Visual Studio | Xamarin

Updated: 2016/06/09

Below are some notes that I took today while researching various PCL profiles and their compatibility for use with Xamarin in Visual Studio. It's by no means complete, and the known limitations for Xamarin.Android and Xamarin.iOS apply in addition to what I noted below.

Profile 44 (.NET 4.5.1, Windows 8.1) (netstandard 1.2)

  • Supported in Xamarin for Visual Studio 4.1+
  • Similar to Profile 151, but includes access to data annotations and a subset of WCF APIs:
    • System.ComponentModel.Annotations
    • System.ComponentModel.DataAnnotations
    • System.ServiceModel
    • System.ServiceModel.Duplex
    • System.ServiceModel.Http
    • System.ServiceModel.NetTcp
    • System.ServiceModel.Primitives
    • System.ServiceModel.Security
  • Most current and forward looking profile (at the expense of backward compatibility)

Profile 151 (.NET 4.5.1, Windows 8.1, Windows Phone 8.1) (netstandard 1.2)

  • Supported in Xamarin for Visual Studio 4.1+
  • This is a slightly updated version of Profile 111
    • Several assemblies updated to newer versions
      • System.Diagnostics.Tracing
      • System.Runtime
      • System.Runtime.InteropServices
    • Access to System.Threading.Timer which isn’t available in Profile 111

Profile 111 (.NET 4.5, Windows 8.0, Windows Phone 8.1) (netstandard 1.1)

  • Supported in Xamarin for Visual Studio 2.0+
  • No WCF (Due to WP8.1 support)
  • Access to (but not available in profiles 259, 344, 78, or 158):
    • Parallel Tasks
    • Parallel LINQ
    • Concurrent Collections
    • System.Net.Http
    • System.Numerics
    • System.IO.Compression

Profile 259 (.NET 4.5, Windows 8.0, Windows Phone Silverlight 8.0, Windows Phone 8.1) (netstandard 1.0)

Profile 344 (.NET 4.5, Windows 8.0, Windows Phone Silverlight 8.0, Silverlight 5, Windows Phone 8.1)

  • Supported in Xamarin for Visual Studio 2.0+
  • Basically replaces profile 158
  • Broadest Reach (most platforms) of the .NET 4.5+ Profiles at the expense of one of the most narrow API surfaces
  • No WCF (Due to WP8.1 support)
  • Async/Await requires use of a NuGet package (Due to SL5 support)
  • Consider using Profile 259 unless Silverlight 5 support is required

Profile 78 (.NET 4.5, Windows 8.0, Windows Phone Silverlight 8.0) (netstandard 1.0)

  • Broad reach
  • Consider using Profile 259 unless WCF support is required

Profile 158 (.NET 4.5, Windows 8.0, Windows Phone Silverlight 8.0, Silverlight 5)

  • Broad reach
  • Async/Await requires use of a NuGet package (Due to SL5 support)
  • Consider using Profile 259 unless Silverlight 5 or WCF support is required