8 ms·
.NET Standard 2.0 is final
- LyalinDotCom 9y agoAwesome milestone, so happy to see progress with .NET Standard as it makes developers lives a lot more predictable. On that note... a shameless plug :), don't miss .NET Conf 2017 our 3-day digital event that will talk all about .NET standard 2.0 and much more in Sept. Sept 19th - 21st, watch anywhere details at: http://www.dotnetconf.net/ http://www.dotnetconf.net/
- curiousDog 9y agoSuch a confusing name. I thought this was the .NET Spec publication. Still better than .NET 365 Premium Plus I guess :-)
- Analemma_ 9y agoI think it is the spec? I don't blame you for the confusion though. I do think that there is light at the end of the tunnel and that once Microsoft finally works through all this, it will be a lot less confusing. But lord has it been a painful transition. My head is swimming in ".NET <Foo>"s
- iokevins 9y ago".NET Standard is a specification that represents a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation. Think of .NET Standard as POSIX for .NET." https://github.com/dotnet/standard/blob/master/docs/faq.md https://github.com/dotnet/standard/blob/master/docs/faq.md
- swgillespie 9y agoThe ".NET Spec" doesn't have the name ".NET" in it anywhere - .NET has always been the name of Microsoft's implementation of the Common Language Infrastructure spec (https://www.ecma-international.org/publications/standards/Ecma-335.htm https://www.ecma-international.org/publications/standards/Ec...). Now that Microsoft itself (and Mono + Xamarin) has multiple implementations of the CLI, it's spec'd the API surface area that is to be expected across the multiple implementations (since this is explicitly not covered in detail in ECMA335) - hence the name, .NET Standard.
- terrajobst 9y agoIndeed :-) Here is how to think about this: * .NET Standard is a specification of APIs. * ECMA 335 is the specification of the .NET runtime aspects (i.e. what the metadata format is, what the semantics are of the intermediate language and so on). * ECMA 334 is the C# language specification. So there are really multiple specs that would make up a ".NET spec". We simply settled on .NET Standard because it's shorter than .NET Standard Library and the word standard conveys the spec aspect around it. We could have called it .NET Standard API Set but hey, it's supposed to be a product name, not a multi-word description :-) Does this help?
- lwansbrough 9y agoCompatibility mode sounds like a godsend for those of us who have had to hold back due to compatibility issues with third party code/libraries. It's a risk, to be sure, but awesome that it's an option now. Side note: very much looking forward to UWP targeting .NET standard. Not long now before you'll be able to develop UWP apps for Ubuntu and Mac OS :)
- deleted 9y ago[deleted]
- jasallen 9y agoMicrosoft's Xamarin Forms 3.0 (stable release later this year) allows you to target Linux and Mac[1] and is very similar to UWP conceptually - UI written once, run anywhere. It's just that Xamarin's "anywhere" is much larger :) Disclosure: I work on Xamarin team at Microsoft [1]https://forums.xamarin.com/discussion/85747/xamarin-forms-feature-roadmap https://forums.xamarin.com/discussion/85747/xamarin-forms-fe...
- randomf1fan 9y agoQuestion for you - I have created a few (okay, two) UWP apps, but the limited success of the store has made me look to using Xamarin. Only thing is, Xamarin's XAML is sufficiently different from UWP's XAML that I got disoriented and gave up. If I want to target cross platform apps (including Linux and Mac), should I wait for Xamarin Forms 3 or will UWP eventually expand to cover Mac & Linux? I'm only a hobby programmer so I don't want to waste hours learning something that will be a dead end. Any insight you might have would be very useful! thanks
- pjmlp 9y agoMicrosoft is working out a XAML standard to cover that case. If you check BUILD 2017 sessions, there were a couple of talks about it.
- randomf1fan 9y ago
- ko27 9y agoDoes anybody have any idea what is the total number of APIs available in .NET Framework? I am interested how big of a subset .NET Standard is.
- martinald 9y agoApparently ~70% of current nugets are compatible with the standard, which I thought was interesting.
- terrajobst 9y agoThe .NET Framework has approximately 250k APIs. The majority are from the application models stacks (WinForms, WPF, and ASP.NET). .NET Standard has about 32k APIs that set is pretty close to all the APIs that are part of .NET Framework that aren't specific to any application models. However, we still have a few things we need to bring to .NET Standard.
- flukus 9y agoAre we calling public classes API's now?
- terrajobst 9y agoAPIs are a long standing name for the set of all .NET constructs (classes, structs, delegates, interfaces, methods, properties, events, fields). In total, the .NET Framework has about 15k types.
- pjmlp 9y agoThey always were, somehow the hipster web crowd decided network interfaces should be named API as well.
- UK-AL 9y agoHeh, .Net Contracts is in there. I thought that was basically unmaintained.
- maxxxxx 9y agoI don't really get what the purpose of this spec is. I would much prefer if they spent the time on improving the .NET Core story. In typical MS manner .NET seems to get more confusing all the time.
- ko27 9y ago> improving the .NET Core story They are. NET Core fully implements NET Standard.
- oceanswave 9y agoFrom an interface perspective. From a behavioral perspective not so much. A lot of classes will throw not implemented or have slightly different results
- jasallen 9y agoThat's true, but it's done so that you can have simple 'if' logic to determine if something is available without having to recompile. If the interfaces were missing altogether the libraries wouldn't be portable from one implementation to another.
- janpieterz 9y agoWait... first I've heard of this. Not that I'm reading every single post letter for letter but have been following the .NET Standard move quite a bit. Is there a list somewhere that specifies what is not implemented per target, though it's in the standard?
- snuxoll 9y agoThere's multiple releases of .Net Standard, different releases of .Net Core target different releases of Standard. .Net Core 1.2 will be the first version to support the full .Net Standard 2.0 API surface.
- 9y ago
- smitherfield 9y agoSo just so I'm clear, .NET ECMA Spec ⊆ .NET Standard ⊆ (.NET Core ∩ Mono ∩ Xamarin ∩ Unity) ⊆ .NET Core ⊆ .NET Framework Correct?
- cjsuk 9y agoI think we need some calculus in there too as it'll be different next week.
- vyrotek 9y agoHere's an analogy using classes and interfaces to explain it https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8baf1b7 https://gist.github.com/davidfowl/8939f305567e1755412d6dc0b8...
- jasallen 9y agoECMA spec is for the CLI, essentially the specification for runtime like type system and GC and all the other things that make an environment work at all Net Standard is a specification of APIs. So in order to be compliant to the standard you must have a class named X with parameters string Y, int Z. "Net Framework" is the name for the Windows "full .net framework" -- this doesn't have a descriptive name since it was before all the rest, but basically its an SDK that is a superset of the Net Standard (and therefore is .Net Standard compliant / interoperable) Mono is a open source implementation of "Net Framework" that runs on multiple platforms (linux, etc). It attempts to treat full .NET Framework's surface area as a spec but re-implement it cross platform. It is _also_ a open source CLI implementation. So in common speech "mono" like ".net" can refer to either the "basic sdk" _or_ the runtime environment. Xamarin is forks of mono for iOS, Android and Mac platforms plus libraries that include full support for interacting with those platforms Native SDKs Unity is a fork of Mono plus gaming tooling and runtime tools. Microsoft does not maintain this, it's a separate company.
- smitherfield 9y agoTo be more clear, I wasn’t actually confused, just commenting on how confusing the various meanings of “.NET” are getting, and maybe helping clear up some of the confusion for people who think visually and remember their discrete math (set theory). Of course it’s still helpful to plenty of people reading this thread to define all those terms. :)
- jongalloway2 9y agoFor people confused about what .NET Standard is and how it relates to .NET Core: Here's an FAQ: https://github.com/dotnet/standard/blob/master/docs/faq.md https://github.com/dotnet/standard/blob/master/docs/faq.md Here's a series of short videos from the product team explaining it: https://www.youtube.com/playlist?list=PLRAdsfhKI4OWx321A_pr-7HhRNk7wOLLY https://www.youtube.com/playlist?list=PLRAdsfhKI4OWx321A_pr-... Short excerpt from the FAQ: .NET Standard is a specification that represents a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation. Think of .NET Standard as POSIX for .NET. Having a standard solves the code sharing problem for .NET developers by bringing all the APIs that you expect and love across the environments that you need: desktop applications, mobile apps & games, and cloud services. Conceptually, I think of it in terms of browsers and browser standards. The relationship between .NET Standard and the various .NET platforms (.NET Core, .NET Framework, Mono, Xamarin, UWP, etc.) is similar to HTML specifications (e.g. https://www.w3.org/TR/html5/ https://www.w3.org/TR/html5/) and individual browsers. Newer HTML features are available on newer browsers, and some browser feature implementation is contextualized (e.g. some web features don't make sense on a mobile phone browser). I know there are rabbit holes to #wellactually on that, so if it doesn't work for you don't worry about it, but as an analogy I've found it helpful. Having a defined feature matrix makes it easier to see which APIs are available for a given platform and version. (Microsoft employee, .NET team member, Nazgûl)
- dsp1234 9y agoAnother analogy for .NET developers: .NET Standard is like an interface .NET Core is like a class that implements the interface Desktop .NET framework is like a class that implements that interface Mono is like a class that implements that interface Like any other class/interface relationship, the class has to implement all interface members, but may add class specific features
- wfunction 9y agoWhat about the BCL, CLS, etc.?
- Manager 9y agoI can already see some APIs that were missing in 1.6 that I need. Extremely exciting and will definitely making transitioning to .NET core so much easier.