Earlier today, Soma announced a collaboration between Microsoft and Xamarin. As you probably know, Xamarin’s Visual Studio extension enables developers to use VS and .NET to extend the reach of their apps across multiple devices, including iOS and Android. As part of that collaboration, today, we are announcing two releases around the .NET portable class libraries (PCLs) that support this collaboration:
- We are making portable Microsoft .NET NuGet libraries available under a new license that enables use on all platforms. This includes HttpClient, Immutable Collections, SignalR, ODataLib and several others. Beyond that, we intend to use this license going forward.
- We are also making the RTM version of the portable reference assemblies available for use on all platforms. This announcement builds on the announcement we made a month ago around the RC release of these reference assemblies.
Microsoft .NET NuGet Libraries Released
Today we released the following portable libraries with our new license, on NuGet.org:
- Async for .NET Framework 4, Silverlight 4 and 5, and Windows Phone 7.5 and 8
- Microsoft ASP.NET SignalR .NET Client
- Microsoft BCL Build Components
- Microsoft BCL Portability Pack
- Microsoft Composition
- Microsoft Compression
- Microsoft HTTP Client Libraries
- Microsoft Immutable Collections
You can now start using these libraries with Xamarin tools, either directly or as the dependencies of portable libraries that you reference.
We also took the opportunity to apply the same license to Microsoft .NET NuGet libraries, which aren’t fully portable today, like Entity Framework and all of the Microsoft AspNet packages. These libraries target the full .NET Framework, so they’re not intended to be used with Xamarin’s iOS and Android tools (just like they don’t target Windows Phone or Windows Store).
These releases will enable significantly more use of these common libraries across Windows and non-Windows platforms, including in open source projects.
Cross-platform app developers can now use PCL
Portable class libraries are a great option for app developers building for Microsoft platforms in Visual Studio, to share key business functionality across Microsoft platforms. Many developers use the PCL technology today, for example, to share app logic across Windows Store and Windows Phone. Today’s announcement enables developers using Xamarin’s tools to share these libraries as well.
In Visual Studio, you’ll continue to use Portable Class Library projects but will be able to reference them from within Xamarin’s tools for VS. That means that you can write rich cross-platform libraries and take advantage of them from all of your .NET apps.
The following image demonstrates an example set of .NET NuGet library references that you can use within one of your portable libraries. The .NET NuGet libraries will enable new scenarios and great new libraries built on top of them.
You can build cross-platform libraries with .NET
This announcement also benefits .NET developers writing reusable and open source libraries. You’ve probably used some of these libraries, for example Json.NET. These developers have been very vocal about wanting this change. This announcement greatly benefits those library developers, enabling them to leverage our portable libraries in their libraries.
Getting started with portable libraries and Xamarin
You can start by building portable libraries in Visual Studio, as you can see in the screenshot above. You can take advantage of the portable libraries that we released today. Write code!
You’ll need an updated NuGet client, to take advantage of this new scenario. Make sure that you are using NuGet 2.7.2 or higher, or just download the latest NuGet for your VS version from the Installing NuGet page.
We are working closely with Xamarin to ensure that our NuGet libraries work well with Xamarin tools, as well as PCL generally. Please tell us if you find any issues. We’ll get them resolved and post them to our known issues page.
Thank you for the feedback on UserVoice. With today’s announcement, we can mark the request to Remove the platform restriction on Microsoft NuGet packages as complete. Thanks to Phil Haack for filing the issue. Coupled with our collaboration with Xamarin, .NET developers have some compelling tools, especially for targeting mobile devices.
Both Microsoft and Xamarin want to see this scenario succeed. We’d love your feedback. Please tell us how the new features are working for you.
This post was written by Rich Lander, a Program Manager on the .NET Team.