New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revisit .NET targets #2251
Comments
Started a thread on Twitter to get some feedback. |
I would argue that you can drop |
Maybe remove .NETCoreApp3.0 and 3.1, because of EOL? |
Currently there are FA options (e.g. Event Monitoring) which is not available in the netstandard target. So, net47 should not be removed. net47 has currently no support end date. So, it should be kept, I guess.
I think, net8 should be added as target for library when using new features from net8. There is no need to add it otherwise. |
Correct. Or at least 4.8, depending on the support lifecycle
That is also correct. |
How about we target this from a feature perspective instead? What new features do we want that requires new TFMs?
Is there any existing TFMs that cause unbearable maintenance?
I think we should bump net47 to at least net472. I have regularly tested FA on .NET 8 previews. |
.NET Framework 4.7 is still supported, so that brings the final list to:
And if we need to support anything specific for .NET 7 or 8, we'll include those as well. But not before that. Right @jnyrup ? |
I'll refer to my comment above. Do we want to:
Some notes: net462 is also still supported by MS, but they have this quote on https://learn.microsoft.com/en-us/dotnet/standard/net-standard?tabs=net-standard-2-0
|
Although NET 4.6.2 is still supported, we didn't support it explicitly. And I'm fine with .NET Standard 2.0. We don't need to support .NET 7 or 8 just yet, but can if we need to. What else is there to discuss? |
We can consider to move the .NET framework related assertions in a separate (legacy) package. This is only beneficial when the the .NET framework related assertions are not used that much (anymore). Do we have any insights in the usage? |
I see no issues to keep supporting .NET 4.7. And there's not much that is 4.7-specific? |
@dennisdoomen I have no issues with supporting that either. But it would simplify the build and reduces the the amount of targets. (.NET 4.7 is already 6,5 years old) |
I tried trimming the TFMs to The only thing I noticed was that I can't find a link right now, but I recall around the release of v6 we discussed to targeting net472 instead of net47 because it solved some problems when multi-targeting net47+netstandard20 and packages.config. We added netstandard21 in #1158 to support |
As a note: if we keep netstandard2.0 keeping netcoreapp31 (and netcoreapp21) and shouldn't put any burden on us as they are supersets of netstandard20. |
I think it was something with 4.6 indeed. Can't be bother to look it up though.
Are you suggesting keeping support for .NET Core?
We should not remove it. So that means |
Nah... I'm mostly just trying to add some extra perspectives besides looking at currently supported frameworks by MS.
Given we don't want to shrink the API surface for frameworks supported by MS. netstandard2.0 because of UWP (this will also include net462) |
Agreed. |
So apparently we were not really testing .NET Standard, except for a single UWP test. |
We're testing the netstandard20 through the netcoreapp20 target. |
Yes, and that one is not supported anymore. You're suggesting to keep doing that and ignore the |
I'm fine with whatever test target that consumes the netstandard20 and netstandard21 TFMs of FA. |
Then you're essentially testing against the .NET Core 3.1 runtime. If we really want to ensure our .NET Standard 2.0 library works as expected, we would need to target UWP, Mono, Xamarin or Unity, which I don't want either. I would be fine only testing .NET 4.7 and 6.0. |
One cannot test netstandard as it's not an implementation, you'll have to run test on a runtime which implements that specification. Of course different runtimes can have different implementations of netstandard, but shouldn't we at least test the all TFMS we compile to against some runtime? |
The compiler will help us protect against using members that aren't available, but we know that certain runtimes pretend to implement .NET Standard, but then throw at runtime. To really catch those cases, you'll need to target the real runtimes. As .NET Standard is being deprecated in the community, But I'm willing to bring that risk to the folks that need .NET Standard. If we don't want that, then we need to either use a deprecated runtime in our tests or start properly supporting all these other frameworks. I don't want to put that burden on ourselves and our contributors. |
To conclude, we have a couple of options:
Since 1 doesn't really solve the real problem and 3 is going to be very costly, I vote for 2. |
I have no concerns also testing with deprecated frameworks, they can only add confidence not take it away. |
No description provided.
The text was updated successfully, but these errors were encountered: