I suggest you ...

Remove the platform restriction on Microsoft NuGet packages

In short, we're customers of .NET, but we are building apps that also target multiple platforms. Likewise, we release a lot of open source libraries.

We cannot take a dependency on the recently released Immutable Collections for example.

For a more detailed description on why this is good for .NET and good for Microsoft, see: http://haacked.com/archive/2013/06/24/platform-limitations-harm-net.aspx

4,900 votes
Sign in
Password icon
Signed in as (Sign out)
You have left! (?) (thinking…)
Phil Haack shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

Thanks a lot for this suggestion and all the votes.

We’re happy to announce that we’ve removed the Windows-only restriction from our license. We’ve applied this new license to most of our packages and will continue to use this license moving forward.

Here is our announcement:


For reference, the license for stable packages can be found here:


Immo Landwerth
Program Manager, .NET Framework Team


Sign in
Password icon
Signed in as (Sign out)
  • Alok commented  ·   ·  Flag as inappropriate

    When we talk about PCL can be used across the platform then it is really joke and embarrassing for Microsoft that PCL can not be used with Visual studio 2012 express or 2013 express. Why Microsoft do such cheap behavior in this era of open source is hard to believe.
    Is there any workaround to have PCL in Visual Studio 2012 express version or at least Visual Studio 2013 express version?

  • Scott Arbeit commented  ·   ·  Flag as inappropriate

    Thank you so much to everyone involved in making this happen, both at Xamarin and Microsoft. This is an amazing evolution in your toolset, and will make my life as an app developer SO much more pleasant. :-)

  • Marc LaFleur commented  ·   ·  Flag as inappropriate

    Recent changes to the reference assembly licensing only serve to highlight how important this change is.

    ISVs face an ROI challenge targeting Windows 8 Modern UI today. They already have teams for Android and iOS and adding a 3rd team is cost and risk prohibitive.

    The best answer to this problem is to provide a process for delving a single app to all three platforms, thereby not only eliminating the ROI risk but also reducing the ongoing costs by having one team and one codebase to serve all major platforms. While Xamarin delivers much of what is needed, this option is crippled by the inability to use key NuGet packages in (HttpClient for example) in a cross-platform app. Removing this restriction would allow for a cleaner and cheaper development story that helps justify the migration costs.

  • Tomasz Cielecki commented  ·   ·  Flag as inappropriate

    To make things worse. Packages such as HttpClient, which are under this platform restriction, do not implement any interfaces, which makes it really hard to implement dependency injection of platform specific versions of HttpClient. Just see https://github.com/Cheesebaron/Cheesebaron.MvxPlugins/blob/modernhttpclient/ModernHttpClient/Core/IHttpClient.cs for all the missing interfaces.

  • Anonymous commented  ·   ·  Flag as inappropriate

    @kerry street: good point, didn't read as closely as I should have...comment removed

  • Kerry Street commented  ·   ·  Flag as inappropriate

    This is NOT done yet. There is some confusion about this due to the announcement Microsoft made about the PCL Reference Assemblies on October 14, 2013. That announcement is a welcomed step in the right direction, but it does not resolve the issue in this suggestion. This suggestion is related to platform restrictions on Microsoft's NuGet packages, not the PCL reference assemblies. That announcement does not solve this specific problem. We are still waiting for a response from Microsoft on this particular suggestion, so feel free to keep voting and showing your support for it.



  • The Logical Potato commented  ·   ·  Flag as inappropriate

    imho "portable library" is not only a piece of software that runs on every desktop, phone or console but also a piece of software that run on every gizmo no matter the underlying os... that's portable!

    not being able to use immutable collections on mono is a big "no no" to me... gotta dig out something else :-(

  • Glenn Block commented  ·   ·  Flag as inappropriate

    Please do this. Having this restriction is just damaging to the .NET OSS ecosystem and removing it is goodness for Microsoft / more reach!

  • Josip Bakić commented  ·   ·  Flag as inappropriate

    +3. Strongly support this.

    I love Ubuntu, and I love .NET. I develop at home in MonoDevelop. I recently published an STM impl for .NET ( https://github.com/jbakic/Shielded ), and I'd love to use it with the new immutable collections since they are an absolutely perfect match, but, how? The insult of putting this into the licence... I feel unwanted. (And when I also consider the story about a Mono upgrade being unlikely on Ubuntu, well, what am I wasting my time on? I barely got myself to vote on this. Totally demotivating.)

  • Drazen Dotlic commented  ·   ·  Flag as inappropriate

    Artificially limiting libraries to "Windows" (Phone/RT/whatever) will *not* force-motivate people to develop for MS only. As is obvious, people will develop for iOS and/or Android first, then distant second (third) Windows Phone purely based on market share, just like they did for years looking at desktop Windows market share.

    Using the same language/tool they are used to on Windows (C# and VS) even if developing for iOS/Android will only help them continue to feel confortable and stay witht the ecosystem. .NET OS libraries like ServiceStack and many others, as well as companies like Xamarin have done more for .NET and Microsoft than Microsoft itself, IMHO. Removing platform restriction is a small effort but a big step in expanding the ecosystem (language and platform) to other systems, only furthering Microsoft's interests, I really don't understand why this isn't already the case.

  • Demis commented  ·   ·  Flag as inappropriate

    Great more libs I can't use. I prefer these libs weren't released at all as it has a viral effect preventing us from using anything that depends on these libs either, and it's not always clear what libraries are hindered by these artificial restrictions, requiring every dev who doesn't want to limit the scope of their software to spend more effort needlessly researching for the presence on any minefields like this.

    I think this move is extremely short-sighted - Xamarin/Mono is not the competition, they're the ones who've done the most to bring back mindshare back into C#/.NET in recent times.

    The compelling, thriving, un-encumbered, alternative cross-platform ecosystems are .NET's real competition - un-necessary artificial fragmentation forcing duplication efforts and implementation inconsistencies like this only make them more appealing.

← Previous 1

Feedback and Knowledge Base