Skip to content
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

How to target .NET in Visual Studio 2019 after .NET Core 3.1 end of support on December 13, 2022 #7834

Closed
bairog opened this issue Sep 27, 2022 · 11 comments
Labels

Comments

@bairog
Copy link

bairog commented Sep 27, 2022

On December 13, 2022 .NET Core 3.1 will reach EOL. Starting that day Visual Studio 2019 will not be able to develop .NET applications in a supported manner (the whole .NET cross-platform development workload in Visual Studio 2019 will be not officially supported anymore). But Visual Studio 2019 is in a Mainstream Support phase till April 2024. So it looks very strange and disappointing that IDE, which is still in the Mainstream Support phase for another 1.5 years, cannot target a supported .NET version (ironically .NET Framework is still supported since its lifecycle is tied to Windows). So my question and proposal are:

  1. How it was planned to use Visual Studio 2019 for .NET development (in a supported manner of course) after December 13, 2022? How does this correlates to the fact that Visual Studio 2019 is still in the Mainstream Support phase for another 1.5 years? MS team definitelly should discuss this problem in May-June 2021 when dropping Visual Studio 2019 support between .NET 6 preview 4 (development was supported with Visual Studio 2019 16.11 preview) and .NET 6 preview 5 (development was supported only with Visual Studio 2022 preview).
  2. I’m afraid that same situation will then happen to Visual Studio 2022. My proposal is that every Visual Studio version should support .NET LTS version that is actual at the IDE release date AND the following .NET LTS version. Regarding Visual Studio 2022 it will be .NET 6.0 LTS -> .NET 7.0 -> .NET 8.0 LTS. Every .NET LTS version is supported for 3 years so at least one .NET target platform will be definitely supported during the whole Mainstream Support phase (5 years) of an IDE. Hope @timheuer and @richlander will hear me and understand my argumentation (since my proposal is pretty evident and simple).

A bit related to #5567

@bairog bairog changed the title Howto target .NET in Visuasl Studio 2019 after .NET Core 3.1 end of support on December 13, 2022 How to target .NET in Visual Studio 2019 after .NET Core 3.1 end of support on December 13, 2022 Sep 27, 2022
@LukaszMc
Copy link

LukaszMc commented Oct 6, 2022

That's very good question. Adoption of any new software in some big financial companies is slow and they will not get VS2022 before .NET Core v3.1 EOL.

@bairog
Copy link
Author

bairog commented Oct 7, 2022

@LukaszMc Totally agreed. Large enterprise companies cannot upgrade IDE so quickly. If only there was a straightforward upgrade path (same like Windows 7/8 was able to be upgraded to Windows 10 with the same license key) - but looks like Microsoft decided not to provide one. Our company owns lots of Visual Studio 2019 Professional standalone licenses and
buying same amount of new Visual Studio 2022 Professional standalone licenses is not so easy and fast task.

@bairog
Copy link
Author

bairog commented Nov 14, 2022

Only a month left until .NET Core 3.1 end of support at December 13, 2022.
After that 3 related workloads in Visual Studio 2019 will be not officially supported:

  1. .NET cross-platform development workload (.NET Core 3.1 and .NET 5.0 will not be supported anymore)
  2. ASP .NET and web development workload (ASP .NET Core 3.1 and ASP .NET Core 5.0 will not be supported anymore)
  3. Data storage and processing workload (Entity Framework Core 3.1 and Entity Framework Core 5.0 will not be supported anymore - even EF Core 3.1 on .NET Framework 4.8 will not be supported)

So the only options left (for companies that are unable to upgrade to Visual Studio 2022 and .NET 6.0 in nearest future) are downgrade to .NET Framework 4.8 (with losing cross-platform then), ASP .NET Core 2.1 on .NET Framework and classic Entity Framework 6.4.4. Ironically all that outdated technologies are still supported. But that is a big step backwards (language syntax, class library, performance, etc.).
.NET cross-platform development was one of the main benefits for Visual Studio 2019 over Visual Studio 2017. But as for December 13, 2022 almost all of them will become unsupported and Visual Studio 2019 will reach feature parity with Visual Studio 2017 in that case. Visual Studio 2019 is in a Mainstream Support phase till April 2024 as opposed to Visual Studio 2017 with Mainstream Support ended April 2022 - so that looks very strange and disappointing.

@timheuer and @richlander - ping you again. We still want to hear answers and some comments on the proposal. Thank you.

@bairog
Copy link
Author

bairog commented Dec 14, 2022

Another month has passed, .NET Core 3.1 has reached EOL, 3 related workloads in Visual Studio 2019 become unsupported
image
But still no reply from Microsoft on this topic. Very disappointing.
@timheuer, @richlander. @mairaw, anybody - we still want to hear answers and some comments on the proposal.
Thank you.

@jamshedd
Copy link
Member

jamshedd commented Feb 3, 2023

.NET and Visual Studio are independent products, and as you noted above each of these has its own independent support lifecycle. While this was not the news you hoped for, unfortunately we do not have plans to extend the lifecycle of .NET to match the 10 year lifecycle of Visual Studio.

VS major versions ship minor or "dot" versions (so 17.4, 17.5, etc. every 3-4 months). When a new .NET major version ships we include that new .NET version in the latest VS minor update. Over the course of VS 2019 (VS16) minor updates we first introduced .NET Core 2.0, followed by 2.1, 3.0, and 3.1).

VS 2019 has now transitioned to maintenance mode, VS 16.11 was the last minor update with no more updates planned beyond monthly security and bug fixes. So it is not possible to introduce a new feature like .NET 6 there.

I do want to point out that this issue is not unique to .NET in VS though. VS also allows you to build Android and iOS apps and each of those platforms have their respective SDKs with their own varying lifecycles, and again shorter than the 10 year lifecycle for VS.

The VS support and servicing page documents this behavior including the fact that VS ships other components like .NET that each have their own independent lifecycle and support duration.

https://learn.microsoft.com/en-us/visualstudio/productinfo/vs-servicing#components-not-covered-by-visual-studio-servicing

I think you would find upgrading to .NET Core 3.1 to 6.0 is not as difficult as you might imagine or have previously experience. Moving from 1.0 -> 2.1 -> 3.1 was certainly a pain, but we had a lot of churn in the .NET Core surface area in the early days. We have been feature complete since .NET Core 3.1 where we re-introduced Winforms and WPF projects and since then the changes have been slower and the compatibility we strive for is also much higher. As a result many customers tell us moving up to a newer .NET versions is fairly painless. If you do run into something unexpected with the migration we'd be interested in hearing about that via an issue.

@bairog
Copy link
Author

bairog commented Feb 4, 2023

While this was not the news you hoped for, unfortunately we do not have plans to extend the lifecycle of .NET to match the 10 year lifecycle of Visual Studio.

I'm not talking about a full 10 year lifecycle of Visual Studio, but only about 5 year Mainstream Support phase.

VS 2019 has now transitioned to maintenance mode, VS 16.11 was the last minor update with no more updates planned beyond monthly security and bug fixes.

Visual Studio 2019 is in a Mainstream Support phase till April 2024 which means feature updates, platform updates, security updates, and functionality fixes according the docs. But regarding .NET development we can see only feature reduction, don't we? Looks like you have transitioned Visual Studio 2019 to maintenance mode too early according to your own docs (there it is called the second 5 years of Extended support and provides only security updates).

Over the course of VS 2019 (VS16) minor updates we first introduced .NET Core 2.0, followed by 2.1, 3.0, and 3.1).

.NET Core 2.x development was available in Visual Studio 2017, so only .NET Core 3.x and .NET 5.0 development were introduced exclusively in Visual Studio 2019 (and now both are unsupported decpite of Visual Studio 2019 Mainstream Support phase).

I think you would find upgrading to .NET Core 3.1 to 6.0 is not as difficult as you might imagine or have previously experience. Moving from 1.0 -> 2.1 -> 3.1 was certainly a pain, but we had a lot of churn in the .NET Core surface area in the early days.

Moving to .NET 6.0 is not looking difficult for us but requires purchasing a bunch of Visual Studio 2022 licenses. So my company must be sure that upcoming .NET 8 LTS support is guaranteed for Visual Studio 2022.

So, again @jamshedd, @richlander, anybody: will Visual Studio 2022 definitely support upcoming .NET 8.0 LTS? Or MS team will again drop support between .NET 8 previews and finally make it exclusive to Visual Studio VNext?

@jamshedd
Copy link
Member

jamshedd commented Feb 5, 2023

At this time there is no published schedule for Visual Studio vNext, what's released out there is VS 2022 so my expectation is .NET 8 development will be supported on VS 2022. If you're looking for an assurance that .NET 8 development would be supported on VS 2022 even after VS vNext were to ship then I cannot provide that at this time before there is even a published schedule for VS vNext.

@bairog
Copy link
Author

bairog commented Feb 28, 2023

@jamshedd Ok, let's leave Visual Studio vNext aside for now.
Let's discuss Visual Studio lifecycle and servicing (Mainstream support and Extended support phases). Visual Studio 2019 was released at April 2019 and reached it's last baseline (version 16.11) at August 2021 (2y 4m after release). According the docs:

First 5 years of Mainstream Support provide feature updates, platform updates, security updates, and functionality fixes.

For Visual Studio 2022 update cycle looks pretty evident and stable: next minor version is released every 3 month, every even version number becomes a baseline. Visual Studio 2022 was released at November 2021 and we can expect that it will reach final baseline (17.11) at August 2024 (2y 9m after release). Again it's pretty far from 5 years described in docs. So my questions are:

  1. Is Visual Studio 2019 still in Mainstream Support phase (because you mentioned erlier that it is "transitioned to maintenance mode" - some term that is not even described in the docs)?
  2. If answer is "yes" - name please several new features added to VS 2019 in for example last year that can be classified as feature updates, platform updates. As I don't see any - regarding .NET development we can see only feature reduction.
  3. If the same story is planned to happend to Visual Studio 2022 - maybe it's time to update Visual Studio lifecycle and servicing docs? Now they are misleading as in fact Mainstream support lasts significantly less than the promised 5 years.

@jamshedd
Copy link
Member

A key point to note is that ,ainstream support for VS 2019 is the period during which the product can provide new features, fixes, etc. it is not meant to be a guarantee that every new feature (like .NET 6) from a newer VS will be backported to the older VS in mainstream support. Whether we take a new feature from a newer VS back to an older VS is a combination of many factors including work involved, risk to destabilize the shipped product, and effort. In the case of .NET 6, the corresponding changes to the tooling were large and complex enough that taking those tooling changes back to VS 2019 was prohibitive so we made the call to ship .NET 6 paired with VS 2022 only.

The other relevant factor is like you noted VS ships features via its feature (dot) updates. VS 2019 shipped its last feature update with VS 16.11 in April 2021. There have been no feature updates since then which means there was never a ship vehicle to deliver a large feature like a new .NET 6 to VS 2019 even if we had wanted to.

@bairog
Copy link
Author

bairog commented Feb 28, 2023

A key point to note is that Mainstream support for VS 2019 is the period during which the product can provide new features, fixes, etc.

That "key point to note" is not even mentioned in docs.

it is not meant to be a guarantee that every new feature (like .NET 6) from a newer VS will be backported to the older VS in mainstream support.

I don't expect every new feature from a newer VS to be back ported to the older VS. I expect (according to info described in docs) to have any update that can be classified as feature updates, platform updates during the whole period of first 5 years.

The other relevant factor is like you noted VS ships features via its feature (dot) updates. VS 2019 shipped its last feature update with VS 16.11 in April 2021. There have been no feature updates since then which means there was never a ship vehicle to deliver a large feature like a new .NET 6 to VS 2019 even if we had wanted to.

So actually there are no feature updates since time when VS reaches it's last baseline (last "dot" update), right? Assuming that MS stabilized VS update cycle (next minor version is released every 3 month, every even version number becomes a baseline) we can conclude that 2y 6m - 2y 9m after release VS actually "is transitioned to maintenance mode" (only security updates). This information definitely must be added to documents so as not to mislead users and not to overestimate their expectations.

@jamshedd
Copy link
Member

Thanks, I will pass on your last piece of feedback about clearer documentation for VS i.e. there's no new features for VS after the last dot update for VS ships.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants