Comments (9)
For reference there are about ~250 APIs marked as obsolete in netstandard.
from standard.
I don't think we can exclude APIs just because they are marked as obsolete.
from standard.
@terrajobst This isn't the "a future release" where it "may" be removed? :)
from standard.
Our problem with .NET Core isn't that it's not "clean enough". Our problem is that .NET Core is too hard to target.
I think moving forward, we've a much better way to experiment on top of .NET Core. I could see a world where we can make more adjustments there, because everything is app-local and folks can update on their own cadence. But we're aren't there yet.
from standard.
Our problem with .NET Core isn't that it's not "clean enough". Our problem is that .NET Core is too hard to target.
It's too hard to target for old, existing code, I'd say. I think it's hard to argue that bringing back obsolete API's is really going to help any new code target .NET Core (except by having more dependencies using obsolete code available).
In my opinion, the line between API's that we actually marked obsolete and "really bad APIs that should have been obsoleted but never were" is too ambiguous to be useful. We haven't been consistent enough in the past with obsoleting and deprecating for those categories to be relied upon now. We've also had cases where we needed to UN-obsolete some members because they shouldn't have been marked in the first place: https://github.com/dotnet/corefx/issues/8043. I think we should ignore the attribute in most cases, because it's not proved to be very reliable.
I could see a world where we can make more adjustments there, because everything is app-local and folks can update on their own cadence.
It kind of seems like a pipe dream at this point, especially with the introduction of the shared framework and the implicit compatibility guarantees offered by the .NET Standard work (even if we, in theory, reserve the right to make breaking changes).
from standard.
In my mind the obsolete attribute means "don't write new code that uses this, it may not work well, the compiler will help warn you" and does not mean "we may remove this API in a future version" as our predecessors hoped it would mean.
from standard.
In my mind the obsolete attribute means "don't write new code that uses this, it may not work well, the compiler will help warn you"
That's generally a good idea until you hit something like the issue I linked above. And I'm not really sure we haven't made the same mistakes elsewhere in the framework. We had different priorities at different times when we used the attribute, so it's no wonder that some of them don't make sense anymore.
from standard.
It's too hard to target for old, existing code, I'd say. I think it's hard to argue that bringing back obsolete API's is really going to help any new code target .NET Core (except by having more dependencies using obsolete code available).
That were true if all the obsolete APIs have equivalents that folks can use. Also, keep in mind that folks write plenty of new code that still needs to interoperate with existing code. It's not just new code vs existing code; it's about evolution vs. building a complete island. The latter case is much more rare.
from standard.
While it it is kind of unfortunate I agree that we should keep the APIs marked as Obsolete unless there is some other reason to remove them. The presents of the attribute alone isn't enough of a reason to exclude for netstandard.
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.