Comments (3)
That's a great suggestion! I'll update the docs to reflect this shortly. A few comments on what you said:
If [the library] is added directly to the standard it can only version at the same cadence as the standard
That is true, but only for libraries that target .NET Standard. However, each .NET platform can rev at its own cadence and extend the API surface of types that are part of .NET Standard -- they don't have to wait for a new version of the standard.
So this isn't completely true:
and will only be supported on other platforms when they update the platform to match the standard
For example, let's say we want add a new method on String
, which is part of .NET Standard. If you're authoring a library that targets .NET Standard you can only see this API when we release a new version of the standard and you update your project to target that version of the standard.
However, we're free to expose this method immediately on .NET Core. Our friends in Xamarin might also quickly update their platform. Developers directly targeting .NET Core or Xamarin wouldn't have to wait for the standard to be updated. However, in order to author a library that runs on both, we need to provide a new version of .NET Standard.
from standard.
I could imagine lots of people wanting extra things to be part of the standard library.
So what I'm trying to convey is unless its a change to a type already in the standard; if its a purely managed type then its better being outside of the standard (as a package) as then you have immediate broad support on all current and future platforms.
Which even includes new System.*
types; they are better living OOB when they can.
An example of the conflict is the new methods (TryXXX
on Stack
and Queue
) needing to be in a new version of .NET Standard; even though its just managed code changes which if they were out of the standard could they could remain targeting .NET Standard 1.3 rather than reviving up to 1.7/2.1 (guessing on the 2.x version)
from standard.
Which even includes new
System.*
types; they are better living OOB when they can.
Agreed; I just tried to communicate the fine line of what we can and cannot do. I've seen some concerns from folks that .NET Standard makes it harder for us to innovate on types that are part of .NET Standard.
That's actually not true:
- Each platform can innovate independently. For BCL & runtime features, we're likely doing all experimentation and innovation on .NET Core first.
- Once happy, we're working with other platform owners to port the changes to other implementations and ship and updated .NET Standard so you can author code that works across all of them.
So .NET Standard doesn't slow that down; it simply puts a spotlight on the problem that updating multiple .NET platforms takes time, especially for ones that ship with the OS (.NET Framework).
Now, for BCL features that are net-new and can sit on top of .NET Standard we're likely building them as libraries targeting .NET Standard because it allows any developer to experiment with them, regardless of which .NET platform they are targeting.
They key thing is: we don't have to artificially try to make a new features pure OOBs; if the feature requires a cross cutting change across runtime, framework, and compiler we will be doing that with .NET Core.
from standard.
Related Issues (20)
- Build issues when referencing project that targets multiple frameworks C# WPF HOT 1
- Questions about tagging within this repository / future versions HOT 1
- System.Drawing.Printing.PrinterSettings slow HOT 1
- Support with Universal Windows Platform HOT 2
- How to build .NET Standard based library for ARM architecture HOT 6
- Update docs to reflect the status of .NET Standard in 2020 HOT 2
- [BUG] [UWP] GetManifestResourceInfo doesn't work on UWP HOT 3
- Value Tuple Could not load file or assembly 'System.ValueTuple, Version=4.0.1.0, HOT 1
- mono and .NET5+ HOT 8
- Security Vulnerability due to System.Text.RegularExpressions HOT 4
- Issue with resolving between .NET Standard 2.0 and .NET Standard 2.1 HOT 3
- Class ValueTask has different definitions between .Net Standard 2.1 and .Net 5 HOT 1
- Strong name signature not valid HOT 5
- Assembly version for DispatchProxy shim is too low resulting in duplicate types for DispatchProxy HOT 10
- linq using GetValueOrDefault in Where clause problem HOT 3
- DbCommand.ExecuteReaderAsync throws TaskCanceledException with wrong CancellationToken HOT 2
- [Feature Request] Allow Static Method In Interface HOT 3
- [question] Will Garbage Collector Collect Memebers, When Object Is Casted To Parent Type, That Is Now Inaccessible On The Type Of Reference? HOT 2
- [Feature Request] Support for MultiSet & MultiMap in System.Collections.Generic HOT 3
- Support of 'IAsyncComparer' for Linq operations. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from standard.