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
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:
Program Manager, .NET Framework Team
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
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. :-)
Marcelo Zabani commented
This is a huge step! Keep doing this stuff, it's great!
Phil Haack commented
Amazing! Thanks! This is great!
Marc LaFleur commented
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.
Geoffrey Huntley commented
Tomasz Cielecki commented
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.
@kerry street: good point, didn't read as closely as I should have...comment removed
Maximilian Haru Raditya commented
And why would MS do that?
Kerry Street commented
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
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
Please do this. Having this restriction is just damaging to the .NET OSS ecosystem and removing it is goodness for Microsoft / more reach!
+3. We need this.
Josip Bakić commented
+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.)
hey, this idea shared 3 day ago? how you give rating 3800 to this? FOUL
Drazen Dotlic commented
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.
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.
Ananth Balasubramaniam commented
+3 My vote, too!
Alex Meyer-Gleaves commented
+3 You've got my vote!
Max Gaerber commented
Please.... with sugar on top