This is by far the most comprehensive and plain speaking explanation of the .NET version wilderness there is. Tim, your lessons and tutorials are world class. Thank you for doing what you are doing in terms of free content. It is much appreciated.
Your video provided a fantastic overview of .NET, especially for someone like me who was out of the loop for the past 14 years. The information you shared was incredibly valuable, and I'm grateful for your generosity in making it freely available. Well done!
Great explanation. We finally competed our 32 project .Net 4.7.1 Solution upgrade to .Net 7 (almost 1.6 million lines of code). It took just over 4 weeks and there were a couple of times we nearly gave up, but I'm glad we kept going. The main problem areas for us were 1) Printing (needed some re-write) , 2) Twain Scanning (needed some re-write) , 3) Legacy Encryption (needed to migrate everything), 4) Windows Impersonation and 5) Some legacy REST api calls (needed a quick re-write). 99% of the code just upgraded and worked, but as ever, it's always that last 1% that gets you!
Awesome! Thanks for sharing. Even though it was a struggle, it is a testament to how "easy" the upgrade path is that you could do it in four weeks (plus the hard work of your team). I'm glad you were able to push through the dependency issues.
But .Net Framework only works on top of IIS and IIS is tied to Windows. .Net framework apps are designed to be monolith. If you just make it .Net 7(which is designed to make microservice), it's another monolith.
@@sea0920 We have 32 projects in our solution, 1 is a WPF app (so tied to Windows), 2 are Blazor portals (can run anywhere - subject to underlying libraries) , 3 are API projects (could run anywhere - subject to underlying libraries) and the rest are either code libraries or services that, while currently configured as windows services could easily be Linux (they were originally). None are specifically tied to IIS, but due to other things some may be reliant on Windows due to device specific dependencies, e.g. Scanner or Printer. The rest could run quite happily on Linux.
I recently had to look up regarding the one of the configuration settings of ASP.NET and ended going down this path to understanding the ongoing and history of .NET versions. This was very crystal clear and really informative. Gives a full clarity on what I was looking for. Thanks for your hard work in making this video.
Thank you for this video, I started my dev career 6-7 years ago so .NET framework and .NET Core were both out. I had somewhat understanding of both and how each one related but this video really gave me a crystal clear picture on both. Thank you!
Rework is always causing naming confusion in big companies. Maybe only communities-driven frameworks have better names thanks to the diversity of ideas. But here and now I got an understanding of this epic rework (v2.0 of the .NET Fwk) and It seems to be now clear to me. As always, explained well enough to understand the roots of the confusion. Thanks, Tim!
thank youu you are literally the best c# content creator out there. Doing an internship with c# .net stack and was so confused by the .net naming schema but this really helped tie up loose ends in my understanding.
Thank you for your effort to make this video! It is really clear and easy-to-follow explanations to not just the old folks but also newbies! I appreciate that!
This video was extensive and incredibly helpful to navigate the dot Net version wilderness and maze as someone said earlier. I thank you immensely for your service.
So freaking true! Ma, Ma Core, Ma Standart, Ma Plus Plus, Ma Minimal, Ma-Shma-bla... I keep forgetting where it started when I reach the end of this idiotic Microsoft mental exercise.
@Priyanker - I think this was a good standardization that made it as easy as possible. Do you have a recommendation that would have made it simpler to understand?
I wasn't aware of the whole upgrade path from .NET Framework Class library to .NET Core Class Library. You learn something new everyday. Got a couple of projects that needs upgrading now...
Thanls Tim, I use both of them, and you presentation is very clear to understand. I have a ppt that I made in the las Conf 2022 with several topics includin the time-line. Thanks for sharing to the comunity developer in .NET
@@IAmTimCorey I have a question and I would be glad if you can give me some insight on it - data structures and algorithms. My university major is Business Information Technology where we take programming and software development courses. We do not take dsa as Computer science/engineering students do. But I've noticed dsa is highly featured in software engineering. I want to go into web development and mobile app development (with flutter), do I need to learn dsa and how how I apply it?
Wow! I've been in IT operations for over a decade and never really needed to know about .NET, so I've been ignorant to it's existence. For a new IT role, i needed to know more about what .NET was about, so that i can replace EOL versions, but it all seemed quite convoluted. All i can say that this has been the most comprehensive tutorial that i stumbled across. Tim, the way that you explained the history, the variations and the versions was astonishing, and you made it very easy to understand. Thank you for taking the time time to upload this, i will be sharing this with my IT team. Count me as a subscriber. One quick question though. If .NET 5 is being used and is now EOL and I want to upgrade to .NET 8, can i just jump straight to .NET 8? Or would i need to installed .NET 6, 7 and then 8?
I'm glad it was so helpful. And yes, you can jump right to .NET 8. I would recommend that you make sure your app is in source control, then just trying out the upgrade (change the 5 to an 8 in the csproj file). Re-compile the app and see what breaks (if anything). It might be the easiest upgrade you ever do. There may be some breaking changes, but that will mostly be on the dependencies you took rather than on your C# code.
Hi Dear Master Tim Corey .Could you please make a compilation video about all syntax changes and improvemeni in c#7_8_9_10_11 and soon 12 , also which new features are very useful and which are not still adopted by the industry and maybe not good for web development or desktop .
Every time a new version of .NET and C# gets released, I cover the changes in it. For example, here is .NET 7 (which mixes in C# 11): www.youtube.com/@IAmTimCorey/search?query=.net%207
Hiya Tim, looking into getting into learning C# and eventually onto blazor. Was looking at your masterclass course and also noticed a dedicated course just for blazor server as well as some other courses featuring it. Does the masterclass cover what the specialised topics cover or do the specialised topics go into more detail and should be partnered alongside the masterclass? Many thanks in advance.
Good question. The Mastercourse gives you a good foundation in the C# topics you need to know. It isn't going to be the "everything you ever need to know" (I know you know this, just making sure to set expectations). So, it focuses primarily on C# itself and making sure you know the language really well. It has a whole section (actually a couple) on databases and how to work with them with C#. It also has a whole set of sections on working with user interfaces (Blazor included). In all of these, you get a really good foundation in how to work with the topic. Say the 80% that requires 20% of the effort. However, there is LOTS more depth to go into. That's where the specialization courses come into play. For example, the Blazor Server section is about 2 hours in the C# Mastercourse. The Blazor Server From Start to Finish course is over 16 hours.
How would you advise building the different applications from your C# Mastercourse if your videos are using older versions of the .NET FW/.NET Core? Should I just try to build the apps with the latest .NET instead since those versions mentioned in those videos are no longer available to use?
Build them in the versions specified, if at all possible. I know the temptation is to build in the latest version, but when you interview for a job, you will find that most companies use older versions of .NET / .NET Framework. Having that experience is important. If the version of .NET Core isn't on your machine, you can still download the SDK from Microsoft: dotnet.microsoft.com/en-us/download/visual-studio-sdks
I disagree. I think the naming was as clear as they could make it. I’ve got a challenge for you: figure out a better naming scheme. Remember that .NET Core is a new product developed in parallel so you can’t just continue the current naming, but it still works with .NET languages so you can’t really change the name. Plus you have to name the bridge product (.NET Standard). You have to do all of that while not confusing people into thinking that .NET Core is totally different while also not confusing them that it is the same.
@@IAmTimCorey My issue is with the numbering. If a noob sees .NET Core 2 and .NET Framework 4.7, it is easy for them to think .NET Framework is cutting edge. It does not matter what the actual names are but it would be nice to see dates as version numbers. Call it .NET Core 2017.08.14 instead of .NET Core 2. This could easily be googled but I feel like they lose people by adding an extra step.
I get that idea, but the problem is that .NET Core 2 was not superior to the .NET Framework. In fact, feature parity didn’t really happen until 3.1. .NET 5 truly moved past the .NET Framework in both number and features.
Well, there is a little problem with Core or Standard: they are built with the scalability on mind. Fantastic, one could say, but in many business applications there is the necessity of managing the session.onend event. The only way to have this managed is still sticking to the .NET Framewor.
That's a pretty messy way to approach web development, though. The reason why OnEnd isn't available in .NET Core is because it operates asynchronously. The web, by its nature, is stateless and asynchronous. Trying to force it to be both stateful and synchronous isn't a great option. The better option is to figure out how to work within the system. If you use SignalR, for instance, you can know when the session ends and you can transmit data in real-time.
@@IAmTimCorey I am talking about business applications, where for security reasons the session is used not only for security but for logic management. For example, in certain contexts is important to perform several tasks when a session ends for a timeout (temp files cleaning, logging, record unlocking, etc.). I've studied the problem for a long time but I've found no satisfying solution so for these kind of projects I'm sticking to .Net, as several other developers.
Where does *orders of magnitude faster* quotes comes from? Is the FCL or the CLR or the JIT compiler that is faster? My experience is that Net6 it is marginally faster than 4.8.
Here is an article that shares benchmarks (with the ability for you to reproduce them yourself): devblogs.microsoft.com/dotnet/performance-improvements-in-net-6/ Note that the top of the article links to previous articles on the previous versions of .NET. That is important because there are less comparisons now to the .NET Framework because of how much has changed. However, even in this article there are some dramatic differences. For example, just constructing a new Random instance in .NET 5 took 1,473.7ns where in .NET 6 it takes 112.9ns (over 12 times faster in just one version update of .NET). Look back at the .NET Core 2.0 benchmark link and you will see things like a simple Concat statement being 30 times faster than on the .NET Framework, serialization being 12 times faster, Enum.Parse being 33% faster with 25 times less allocations, and more. There is lots to dig into, and not everything is benchmarked, but as these articles have gone on, they have done a much better job of highlighting the performance improvements and how to replicate the benchmarks.
Thanks for the video Tim! Great content as always. I do have a question. I use dll's from IBM and from a Content Management Vendor-Laserfiche. Those dll's are targeted to .NET 3.5. Is there a way to use those in a .NET 6/7 solution?
@@IAmTimCorey Thanks for responding Tim. If it's tricky for you, then I've got an uphill battle! Really enjoy the content. Sent a friend the link to your discussion about ChatGPT tonight. Great insight.
Tim I search but I couldn't find a best way to publish into iis. Dlls used by system gives access denied or access violation.. Net framework no problem but core has. Any suggestion?
Maybe one more reason to still use .NET Framework is if you need to use C# assembly from C++ code on Windows. .NET Core does not have COM Interop support out of the box i.e. you have to write .idl files and compile these manually.
That's a pretty specific one, but yes, that can be an option. I don't love it, because you are relying on old technology all around rather than just doing it the modern way, but I understand.
There is not a direct correlation, really, but in practice, they put out a new version of C# at the same time as the new version of .NET and sometimes the changes in the C# version only apply to the latest version of .NET (but not always). It is a tricky connection.
The original idea was to continue with a new engine, but they quickly realized they couldn't bring feature parity to .NET Core quickly, which would mean that they would revert and lose a lot of customers who didn't understand.
Microsoft really bungled this one. To most people, core means stock, minimum, or basic functionality, leading any reasonable person to conclude it's a stripped down version of the .NET Framework. It didn't help when many of its libraries such as WCF and Forms were either dropped or abridged.
But that's exactly what they did. The .NET Framework philosophy was to throw everything into the framework. With .NET Core, they cut it back to just the essentials. All the rest is brought in via NuGet packages so that you get just what you need rather than a large package that you only use a few options out of. So yes, it is stripped down. It also removed a bunch of the bloat that comes from continual patches and upgrades. As for dropping WCF and WebForms (WinForms is still fully supported in .NET Core), WCF was proprietary so they gave it up in favor of the industry-standard gRPC and WebForms was not up to web standards either.
@@IAmTimCorey Yes, you're correct, but we're talking about how most would interpret "core" vs "framework". For a while, developers thought "core" basic, free and open source, while "framework" meant proprietary and full featured. In a Microsoft video, Fowler lamented about developers getting confused about what "minimal API" means. You really have to religiously follow the .NET ecosystem to keep up with the lingo. I juggle several different ecosystems and Microsoft makes it especially hard. I am watching this video to figure out the whole Long Term Support (LTS) means. At a meeting, I suggested we upgrade to .NET 7 and another dev objected saying .NET 6 is LTS. Now I have to research what the hell this means. It could mean that .NET 7 is in a experimental version where it can be changed at anytime, but .NET 7 is supposed to be an official release, not beta. Moreover, why would they use the term "long term support" and discourage developers from upgrading? Microsoft is totally inept!
I think you are confusing “it is confusing to me” with “Microsoft is inept”. Minimal APIs mean just that. They are minimalistic. And LTS is an industry-standard term. It means exactly what it says. They have some customers who don’t want to upgrade often. They use LTS. They have others that always want the latest thing. They get the STS too. Both are supported (the last S stands for support). The difference is the length of support. This, again, is a common practice in the industry. You can pretend the STS versions don’t exist and get your updates every two years. Or you can get an update every year and keep up with the latest changes. You get to choose. Would you rather they didn’t offer this choice?
@@IAmTimCorey It a joke, not a protest. However, naming conventions are important. Given that colloquial language shortens everything for convenience, going from ".NET+ (suffix)" to simply ".NET" was always going to be confusing for people who weren't there to watch successive versions roll out. And it runs counter to general naming conventions in movies, software, games, gadgets, etc. In these, titles get longer as the item version increases.
I guess I'm just jaded when it comes to the naming coming out of Microsoft. This is the easiest naming system they have seemingly ever come up with. Windows 3.1, 95, 98, NT, 2000, XP, Vista, 7, 8, 10, 11? Or Xbox, Xbox 360, Xbox One, Xbox X, Xbox Series X? After those, going from .NET Framework to .NET Core and then finally .NET has seemed like a dream.
Wait, @53:00, .NET Core 3.1 can only build desktop apps for Windows, not for Linux or Mac? That is funny. I wish I was at the development table at Microsoft as we explained that. It's a shame Bill isn't there to say "Let me get this straight. We're going to ditch everything start from scratch, force everyone to upgrade, require updates every 2 years just so websites work on Linux and we call references Nuget packages?"
Yes, WinForms and WPF can only work on Windows (the clue is in the name - they are tied to the Windows dlls). There is still a major benefit to being on .NET Core, though. That benefit is the speed improvements. .NET Core is orders of magnitude faster than the .NET Framework. That's also why it isn't really fair to say that .NET Core is only about the web being cross-platform. It is about it being standards-compliant, faster, more modular, easier to maintain, easier for developers to work with and upgrade, unified (all versions of .NET are now the same as opposed to Mono, Xamarin, UWP, etc.), and lots more.
@@IAmTimCorey I haven't seen any benchmark comparisons but I have seen some claims. Has anyone really done an objective comparison and benchmarks to compare .NET Framework vs .NET Core especially for web development? I might actually just run a page out of curiosity.
Microsoft does them with every release, to be sure they are improving performance, not regressing. While it may not feel "objective" at first, they usually provide the tools to test them yourself. For example, here is an article on the performance of ASP.NET Core 6: devblogs.microsoft.com/dotnet/performance-improvements-in-aspnet-core-6/
You are conflating two things together here. This video explains over 20 years of history and how we got to where we are today so you have a better grasp on the naming conventions and reasoning behind them. If you just want to explain the versioning for what we have today (things being updated), we have .NET. Currently, we are on .NET 7, which is the Short-term Supported (STS) version (supported for 15 months). .NET 8 will come out in November and be the Long-term Supported (LTS) version (supported for 3 years). You get a new version of .NET each November and they alternate between STS and LTS. That's simple to explain. You just don't get the history about why we are here, where it came from, why .NET Framework is still around, etc.
Not really. They may be settling down, but the iPhone 8 was released in September, 2017. The iPhone X was released 2 months later. The iPhone 11 was released two years later. That's not exactly a predictable pattern.
@@IAmTimCorey they generally release in september, but there were indeed some exceptions. But they always delivered a complete phone and did not cut features like maui.
I'm an iPhone fan, but even I'll admit that's not the case. Releasing a phone two months after releasing a new phone was a big slap in the face. The X had features that the 8 did not, which meant that they released hardware that essentially wasn't complete. As for their software, they are consistently behind the competition in what they release. We hear about features that never make it to production. Finally, they release updates that are buggy. For example, here's an article dedicated to some of the issues of iOS 14 and how to fix them: www.techradar.com/news/ios-14-problems The key, though, is that Apple is a different company than Microsoft, so when Microsoft has to create software that supports iOS, it can be difficult to manage. That can be true whether the software is amazing and predictable or not.
I just downloaded .NET 6 and 7 and realized it doesn't work with Visual Studio 2019🙂 I have 5.0 but it's not supported. So now I also have to upgrade my visual studio. I hope SQL Server 2026 and Windows 12 are not prerequisites 🤣 So every time a new version comes out, I have to upgrade my visual studio - it's not even a choice, it's a mandate.
Watching this I can't help but get the sense that Microsoft's marketing team was desperately trying to push the version of .NET Core past 4.8 to make it superior. It reminds me of Spinal Tap's 11 volume knob.🤣🤣🤣
I didn't try to make it "so long". I tried to cover all of the points of confusion around the topic. I could have said ".NET, which was .NET Core, is a rewrite of the .NET Framework and .NET Standard is the bridge between the two." and been done in less than 15 seconds. However, I think you would agree that this explanation is missing a bit of context. The things you want cut out of the video are things that someone else wanted in the video. And the things they wanted cut out are things you actually wanted.
I disagree. First, I was thorough in my explanation in order to address a wide audience. I could have said “.NET Core is a new product that replaces the .NET Framework” and called it good. Second, I hear lots of people complain about the naming, but I have yet to hear one viable alternative that is clearer.
@@IAmTimCorey wide audience? Do you think a Node.js or Java Developer or any other developer or a common Idiot has time to wait and watch 1 and half hour long video to understand JUST .NET VERSIONING? Look, I'm a full-stack developer (Angular and .NET.) I started learning .NET from.NET5, but when I started my .NET journey in Industry the scenario is quite different and disgusting. Most of the projects are still in older .NET versions and people are not even willing to update them. And If Microsoft wants .NET to be open for every platform they first need to ensure proper IDE and tools support to Linux users otherwise they can keep it to their SH*T OS. I can understand .NET is pretty good now but the backslash it get's because of its earlier disgusting windows-specific development is good enough to keep it unpopular.
I think that is a pretty poor take. Yes, the .NET Framework was designed to work on Windows. Windows also owned 80+% of the market share at that time and Windows was how they made their money. It isn't "disgusting" to make a decision based on making money. You do that when you take a job. As for .NET not having a "proper" IDE on Linux, use Rider. It works great on Linux. Microsoft isn't obligated to provide you with exactly what you want. In fact, I think they've gone further than they "should" with free content (I really appreciate it, but I often question the business sense of it). Linux has a TINY market share. Even then, there isn't one Linux desktop, there are multiple. Also, Linux isn't really an operating system. It is a platform that operating systems are built on. That further fragments the market.
This is by far the most comprehensive and plain speaking explanation of the .NET version wilderness there is. Tim, your lessons and tutorials are world class. Thank you for doing what you are doing in terms of free content. It is much appreciated.
Thank you!
Your video provided a fantastic overview of .NET, especially for someone like me who was out of the loop for the past 14 years. The information you shared was incredibly valuable, and I'm grateful for your generosity in making it freely available. Well done!
I am glad it was helpful.
I truly cannot thank you enough for taking the time to do this video. It was incredibly informative as always!
You are welcome.
This is my first time ever learning about .NET and I feel like I understand it so well already. You explained it really well!
Awesome! I’m glad it was helpful.
This is insanely useful. I wish such information was part of MS documentation somewhere. Thank you Tim.
Glad it was helpful!
Excellently done. You should get an award for clearing up the confusion surrounding them.
Thank you!
Finally, I understand the .NET universe. This was incredibly well explained, thank you!
I am glad it was helpful.
Great explanation. We finally competed our 32 project .Net 4.7.1 Solution upgrade to .Net 7 (almost 1.6 million lines of code). It took just over 4 weeks and there were a couple of times we nearly gave up, but I'm glad we kept going. The main problem areas for us were 1) Printing (needed some re-write) , 2) Twain Scanning (needed some re-write) , 3) Legacy Encryption (needed to migrate everything), 4) Windows Impersonation and 5) Some legacy REST api calls (needed a quick re-write). 99% of the code just upgraded and worked, but as ever, it's always that last 1% that gets you!
Awesome! Thanks for sharing. Even though it was a struggle, it is a testament to how "easy" the upgrade path is that you could do it in four weeks (plus the hard work of your team). I'm glad you were able to push through the dependency issues.
Does it work or will everyone get fired😃?
@@techsamurai11 LOL - thankfully it all works, including all the unit tests :)
But .Net Framework only works on top of IIS and IIS is tied to Windows. .Net framework apps are designed to be monolith. If you just make it .Net 7(which is designed to make microservice), it's another monolith.
@@sea0920 We have 32 projects in our solution, 1 is a WPF app (so tied to Windows), 2 are Blazor portals (can run anywhere - subject to underlying libraries) , 3 are API projects (could run anywhere - subject to underlying libraries) and the rest are either code libraries or services that, while currently configured as windows services could easily be Linux (they were originally). None are specifically tied to IIS, but due to other things some may be reliant on Windows due to device specific dependencies, e.g. Scanner or Printer. The rest could run quite happily on Linux.
In a few minutes (I won't say which ones so guys - watch the whole video) you've explained what I have been trying to understand for years
I am glad it was helpful.
This was a super informative .. clear many doughts, Can make Clear Decissions, Now Cleared Confusion about Porper Naming .. just awesome..
Glad it was helpful!
I recently had to look up regarding the one of the configuration settings of ASP.NET and ended going down this path to understanding the ongoing and history of .NET versions. This was very crystal clear and really informative. Gives a full clarity on what I was looking for. Thanks for your hard work in making this video.
I am glad it was helpful.
The first and only time I've truly understood the .NET terms. Thank you.
I am glad it was helpful.
The world is better place because of people like Tim ❤who give lot of knowledge free of cost
Thank you!
Agree. Read the doc make you lost and tim is the saviour
Thank you for this video, I started my dev career 6-7 years ago so .NET framework and .NET Core were both out.
I had somewhat understanding of both and how each one related but this video really gave me a crystal clear picture on both. Thank you!
Glad it helped!
Rework is always causing naming confusion in big companies. Maybe only communities-driven frameworks have better names thanks to the diversity of ideas. But here and now I got an understanding of this epic rework (v2.0 of the .NET Fwk) and It seems to be now clear to me. As always, explained well enough to understand the roots of the confusion. Thanks, Tim!
You are welcome.
I used to underestimate all the theory. Now I don't, it helps in lots of detailed code optimisation. Thanks a lot Tim
You are welcome.
thank youu you are literally the best c# content creator out there. Doing an internship with c# .net stack and was so confused by the .net naming schema but this really helped tie up loose ends in my understanding.
I am glad it was so helpful.
Hi @tim correy thanks alot for the videos. I am a ugandan and i enjoy your videos
You are welcome.
You are the best .NET Master I've ever found on RUclips Sir! 😎
Thank you.
Thank you for your effort to make this video! It is really clear and easy-to-follow explanations to not just the old folks but also newbies! I appreciate that!
You're very welcome!
Great break down on .NET versioning, now I got better clarity on what MS did, Thanks Tim
Glad it helped!
I have a clear visualization now for all the framework versions. Thank you Tim.
You are welcome.
Best explanation I have ever heard. It was so confusing before seeing this. Thanks
Great to hear!
This video was extensive and incredibly helpful to navigate the dot Net version wilderness and maze as someone said earlier. I thank you immensely for your service.
I am glad it was helpful.
You relieved me from an existential crisis around the .NET naming insanity lol Thanks!
I am glad it was helpful.
versioning is easy peasy, it takes only one and half hour to explain how we do versions!
So freaking true! Ma, Ma Core, Ma Standart, Ma Plus Plus, Ma Minimal, Ma-Shma-bla... I keep forgetting where it started when I reach the end of this idiotic Microsoft mental exercise.
Haha
In their defense, this isn’t versioning of a product. This is two different products with a bridge product in between.
@Priyanker - I think this was a good standardization that made it as easy as possible. Do you have a recommendation that would have made it simpler to understand?
@@IAmTimCorey May I try: Any naming convention will be better then using the same moniker (Net) in the product name.
Man, just in the right moment when I was struggling with some naming issues! Perfect!
Great!
I wasn't aware of the whole upgrade path from .NET Framework Class library to .NET Core Class Library. You learn something new everyday. Got a couple of projects that needs upgrading now...
I'm glad it was helpful.
How will you upgrade them
I am a .NET dev since 1 year (after 7 years PHP). I meanly make libs and RESTful Backends. After your video I feel less ignorant then before ❤️❤️❤️
Awesome! I am glad it was helpful.
Thanls Tim, I use both of them, and you presentation is very clear to understand. I have a ppt that I made in the las Conf 2022 with several topics includin the time-line. Thanks for sharing to the comunity developer in .NET
You are welcome.
Thank you for taking the time to explain all of this. Its actually pretty simple and easy to understand. Grest video!
You are welcome.
.Net versions always confused me. Thank you for making this video :)
You're welcome.
Made me watch the full video even i'm not really interested in .NET. Great job!✅✅
Glad you liked it!
Very informative and covered most of the areas. Thanks for creating such a great video.
You are welcome.
That was a great explanation that I needed to help me better understand the .NET version naming.
Great!
What a great explanation, thank you very much. It's all more clear to me now.
Glad it was helpful!
Great this video answers a question I posted on your now 4 years old video. Just been looking at Avalonia, looks very capable.
I am glad it was helpful.
Awesome video, cleared my all doubts on .net framework
Excellent!
Very well explained. Now my confusion is over 🎉
I am glad it was helpful.
@@IAmTimCorey I have a question and I would be glad if you can give me some insight on it - data structures and algorithms.
My university major is Business Information Technology where we take programming and software development courses. We do not take dsa as Computer science/engineering students do. But I've noticed dsa is highly featured in software engineering.
I want to go into web development and mobile app development (with flutter), do I need to learn dsa and how how I apply it?
awesome content, I am binge watching all of your videos
Glad you like them!
Thanks for creating this video. It helps clarify this so much.
You are welcome.
Great video Tim, thanks for sharing!
You are welcome.
Thank you ❤. I learned a lot about .Net from this video.
You are welcome.
Thanks for the explanation, it was really clear and helpful.
You're welcome!
Very clear and informative. Thanks Tim.
You are welcome.
Awesome breakdown. Thank you Tim.
You are welcome.
Another excellent Tutorial from Tim Thank you
You are welcome.
Wow! I've been in IT operations for over a decade and never really needed to know about .NET, so I've been ignorant to it's existence.
For a new IT role, i needed to know more about what .NET was about, so that i can replace EOL versions, but it all seemed quite convoluted. All i can say that this has been the most comprehensive tutorial that i stumbled across.
Tim, the way that you explained the history, the variations and the versions was astonishing, and you made it very easy to understand. Thank you for taking the time time to upload this, i will be sharing this with my IT team. Count me as a subscriber.
One quick question though. If .NET 5 is being used and is now EOL and I want to upgrade to .NET 8, can i just jump straight to .NET 8? Or would i need to installed .NET 6, 7 and then 8?
I'm glad it was so helpful. And yes, you can jump right to .NET 8. I would recommend that you make sure your app is in source control, then just trying out the upgrade (change the 5 to an 8 in the csproj file). Re-compile the app and see what breaks (if anything). It might be the easiest upgrade you ever do. There may be some breaking changes, but that will mostly be on the dependencies you took rather than on your C# code.
Excellent video Tim! Thanks!
You are welcome.
Hi Dear Master Tim Corey .Could you please make a compilation video about all syntax changes and improvemeni in c#7_8_9_10_11 and soon 12 , also which new features are very useful and which are not still adopted by the industry and maybe not good for web development or desktop .
Every time a new version of .NET and C# gets released, I cover the changes in it. For example, here is .NET 7 (which mixes in C# 11): www.youtube.com/@IAmTimCorey/search?query=.net%207
This was a very informative video. Thank you for sharing.
You are welcome.
Very cool video! A lot of confusion clarified! Thanks!
Glad it was helpful!
Thank you so much for explaining it clearly.
You're very welcome!
It is very informative. Thanks to your teaching skills :)
You are welcome.
Great explanation, thank you!
You are welcome.
As always, great video! Thanks!
You are welcome.
This was a very helpful video thank you so much.
You are so welcome!
Very clear explanation of this. Thnks.
You are welcome.
Thanks so much, incredibly helpful.
You are welcome.
Wow!! Thank you so much now I understand everything
You are welcome.
Great video! Thanks for sharing!
You are welcome.
Thank you so much such a great information
You are welcome.
Thanks for the clarification
You are welcome.
Thanks a lot for this lesson ☺️
You are welcome.
THANK YOU VERY MUCH for thie great video!
You are welcome.
Thanks Tim!
You're welcome!
Brilliant!
Thanks!
Hiya Tim, looking into getting into learning C# and eventually onto blazor. Was looking at your masterclass course and also noticed a dedicated course just for blazor server as well as some other courses featuring it.
Does the masterclass cover what the specialised topics cover or do the specialised topics go into more detail and should be partnered alongside the masterclass?
Many thanks in advance.
Good question. The Mastercourse gives you a good foundation in the C# topics you need to know. It isn't going to be the "everything you ever need to know" (I know you know this, just making sure to set expectations). So, it focuses primarily on C# itself and making sure you know the language really well. It has a whole section (actually a couple) on databases and how to work with them with C#. It also has a whole set of sections on working with user interfaces (Blazor included). In all of these, you get a really good foundation in how to work with the topic. Say the 80% that requires 20% of the effort. However, there is LOTS more depth to go into. That's where the specialization courses come into play. For example, the Blazor Server section is about 2 hours in the C# Mastercourse. The Blazor Server From Start to Finish course is over 16 hours.
hope after this you will start C# 11 syntax with .Net 7...Thanks for your valuable work
I've already covered a lot of the changes with C# 11 and .NET 7: www.youtube.com/@IAmTimCorey/search?query=.net%207
How would you advise building the different applications from your C# Mastercourse if your videos are using older versions of the .NET FW/.NET Core? Should I just try to build the apps with the latest .NET instead since those versions mentioned in those videos are no longer available to use?
Build them in the versions specified, if at all possible. I know the temptation is to build in the latest version, but when you interview for a job, you will find that most companies use older versions of .NET / .NET Framework. Having that experience is important.
If the version of .NET Core isn't on your machine, you can still download the SDK from Microsoft: dotnet.microsoft.com/en-us/download/visual-studio-sdks
Got it, thank you so much!@@IAmTimCorey
Thank you 💙
You are welcome.
Microsoft is so bad at naming versions that it took this man an hour and a half to explain it.
I disagree. I think the naming was as clear as they could make it. I’ve got a challenge for you: figure out a better naming scheme. Remember that .NET Core is a new product developed in parallel so you can’t just continue the current naming, but it still works with .NET languages so you can’t really change the name. Plus you have to name the bridge product (.NET Standard). You have to do all of that while not confusing people into thinking that .NET Core is totally different while also not confusing them that it is the same.
@@IAmTimCorey My issue is with the numbering. If a noob sees .NET Core 2 and .NET Framework 4.7, it is easy for them to think .NET Framework is cutting edge. It does not matter what the actual names are but it would be nice to see dates as version numbers. Call it .NET Core 2017.08.14 instead of .NET Core 2. This could easily be googled but I feel like they lose people by adding an extra step.
I get that idea, but the problem is that .NET Core 2 was not superior to the .NET Framework. In fact, feature parity didn’t really happen until 3.1. .NET 5 truly moved past the .NET Framework in both number and features.
Thank you 😌
You’re welcome.
Hi Tim, love your video, could you make some about localization on c# and wpf including data annotation? There isn't much about it online.
Thanks for the suggestion. Please add it to the list on the suggestion site so others can vote on it as well: suggestions.iamtimcorey.com/
Should I watch this or the from the master course .NET versions (Bonus Course)? Or both?
The bonus course has more details, but both will be valuable.
Well, there is a little problem with Core or Standard: they are built with the scalability on mind. Fantastic, one could say, but in many business applications there is the necessity of managing the session.onend event. The only way to have this managed is still sticking to the .NET Framewor.
That's a pretty messy way to approach web development, though. The reason why OnEnd isn't available in .NET Core is because it operates asynchronously. The web, by its nature, is stateless and asynchronous. Trying to force it to be both stateful and synchronous isn't a great option. The better option is to figure out how to work within the system. If you use SignalR, for instance, you can know when the session ends and you can transmit data in real-time.
@@IAmTimCorey I am talking about business applications, where for security reasons the session is used not only for security but for logic management. For example, in certain contexts is important to perform several tasks when a session ends for a timeout (temp files cleaning, logging, record unlocking, etc.). I've studied the problem for a long time but I've found no satisfying solution so for these kind of projects I'm sticking to .Net, as several other developers.
Thank you a lot!
You're welcome!
Where does *orders of magnitude faster* quotes comes from? Is the FCL or the CLR or the JIT compiler that is faster? My experience is that Net6 it is marginally faster than 4.8.
Here is an article that shares benchmarks (with the ability for you to reproduce them yourself): devblogs.microsoft.com/dotnet/performance-improvements-in-net-6/
Note that the top of the article links to previous articles on the previous versions of .NET. That is important because there are less comparisons now to the .NET Framework because of how much has changed. However, even in this article there are some dramatic differences. For example, just constructing a new Random instance in .NET 5 took 1,473.7ns where in .NET 6 it takes 112.9ns (over 12 times faster in just one version update of .NET).
Look back at the .NET Core 2.0 benchmark link and you will see things like a simple Concat statement being 30 times faster than on the .NET Framework, serialization being 12 times faster, Enum.Parse being 33% faster with 25 times less allocations, and more.
There is lots to dig into, and not everything is benchmarked, but as these articles have gone on, they have done a much better job of highlighting the performance improvements and how to replicate the benchmarks.
Thanks for the video Tim! Great content as always. I do have a question. I use dll's from IBM and from a Content Management Vendor-Laserfiche. Those dll's are targeted to .NET 3.5. Is there a way to use those in a .NET 6/7 solution?
Not easily. There may be some things you can do to work around them, but it will be tricky.
@@IAmTimCorey Thanks for responding Tim. If it's tricky for you, then I've got an uphill battle! Really enjoy the content. Sent a friend the link to your discussion about ChatGPT tonight. Great insight.
Tim I search but I couldn't find a best way to publish into iis. Dlls used by system gives access denied or access violation.. Net framework no problem but core has. Any suggestion?
Maybe one more reason to still use .NET Framework is if you need to use C# assembly from C++ code on Windows. .NET Core does not have COM Interop support out of the box i.e. you have to write .idl files and compile these manually.
That's a pretty specific one, but yes, that can be an option. I don't love it, because you are relying on old technology all around rather than just doing it the modern way, but I understand.
best!
Thanks!
How do C# versions relate to .NET Core and .NET Framework versions?
There is not a direct correlation, really, but in practice, they put out a new version of C# at the same time as the new version of .NET and sometimes the changes in the C# version only apply to the latest version of .NET (but not always). It is a tricky connection.
They used to call .net core .net 5 before adding the word core. This was in like 2015 or so
The original idea was to continue with a new engine, but they quickly realized they couldn't bring feature parity to .NET Core quickly, which would mean that they would revert and lose a lot of customers who didn't understand.
What should be done for the security of c# codes ? Thanks
I believe this will answer your question: ruclips.net/video/4JyCS4t-_sQ/видео.html
@@IAmTimCorey thank you so much
Microsoft really bungled this one. To most people, core means stock, minimum, or basic functionality, leading any reasonable person to conclude it's a stripped down version of the .NET Framework. It didn't help when many of its libraries such as WCF and Forms were either dropped or abridged.
But that's exactly what they did. The .NET Framework philosophy was to throw everything into the framework. With .NET Core, they cut it back to just the essentials. All the rest is brought in via NuGet packages so that you get just what you need rather than a large package that you only use a few options out of. So yes, it is stripped down. It also removed a bunch of the bloat that comes from continual patches and upgrades.
As for dropping WCF and WebForms (WinForms is still fully supported in .NET Core), WCF was proprietary so they gave it up in favor of the industry-standard gRPC and WebForms was not up to web standards either.
@@IAmTimCorey Yes, you're correct, but we're talking about how most would interpret "core" vs "framework". For a while, developers thought "core" basic, free and open source, while "framework" meant proprietary and full featured. In a Microsoft video, Fowler lamented about developers getting confused about what "minimal API" means. You really have to religiously follow the .NET ecosystem to keep up with the lingo. I juggle several different ecosystems and Microsoft makes it especially hard.
I am watching this video to figure out the whole Long Term Support (LTS) means. At a meeting, I suggested we upgrade to .NET 7 and another dev objected saying .NET 6 is LTS. Now I have to research what the hell this means. It could mean that .NET 7 is in a experimental version where it can be changed at anytime, but .NET 7 is supposed to be an official release, not beta. Moreover, why would they use the term "long term support" and discourage developers from upgrading? Microsoft is totally inept!
I think you are confusing “it is confusing to me” with “Microsoft is inept”. Minimal APIs mean just that. They are minimalistic. And LTS is an industry-standard term. It means exactly what it says. They have some customers who don’t want to upgrade often. They use LTS. They have others that always want the latest thing. They get the STS too. Both are supported (the last S stands for support). The difference is the length of support. This, again, is a common practice in the industry. You can pretend the STS versions don’t exist and get your updates every two years. Or you can get an update every year and keep up with the latest changes. You get to choose. Would you rather they didn’t offer this choice?
I once watched a YT video summarizing the whole Metal Gear timeline.
It made more sense, and was more logical, than this
I'm not sure what you are expecting Microsoft to do differently. How would you have done things?
@@IAmTimCorey It a joke, not a protest.
However, naming conventions are important. Given that colloquial language shortens everything for convenience, going from ".NET+ (suffix)" to simply ".NET" was always going to be confusing for people who weren't there to watch successive versions roll out.
And it runs counter to general naming conventions in movies, software, games, gadgets, etc. In these, titles get longer as the item version increases.
I guess I'm just jaded when it comes to the naming coming out of Microsoft. This is the easiest naming system they have seemingly ever come up with. Windows 3.1, 95, 98, NT, 2000, XP, Vista, 7, 8, 10, 11? Or Xbox, Xbox 360, Xbox One, Xbox X, Xbox Series X? After those, going from .NET Framework to .NET Core and then finally .NET has seemed like a dream.
Bookmark 30:02
I have a question
Microsoft has ended the support of asp.net?
Nope.
Thanks for clarifying this terrible version naming scheme
You are welcome.
Wait, @53:00, .NET Core 3.1 can only build desktop apps for Windows, not for Linux or Mac? That is funny. I wish I was at the development table at Microsoft as we explained that.
It's a shame Bill isn't there to say "Let me get this straight. We're going to ditch everything start from scratch, force everyone to upgrade, require updates every 2 years just so websites work on Linux and we call references Nuget packages?"
Yes, WinForms and WPF can only work on Windows (the clue is in the name - they are tied to the Windows dlls). There is still a major benefit to being on .NET Core, though. That benefit is the speed improvements. .NET Core is orders of magnitude faster than the .NET Framework. That's also why it isn't really fair to say that .NET Core is only about the web being cross-platform. It is about it being standards-compliant, faster, more modular, easier to maintain, easier for developers to work with and upgrade, unified (all versions of .NET are now the same as opposed to Mono, Xamarin, UWP, etc.), and lots more.
@@IAmTimCorey I haven't seen any benchmark comparisons but I have seen some claims.
Has anyone really done an objective comparison and benchmarks to compare .NET Framework vs .NET Core especially for web development? I might actually just run a page out of curiosity.
Microsoft does them with every release, to be sure they are improving performance, not regressing. While it may not feel "objective" at first, they usually provide the tools to test them yourself. For example, here is an article on the performance of ASP.NET Core 6: devblogs.microsoft.com/dotnet/performance-improvements-in-aspnet-core-6/
Oh boy, time passes.
Yep.
People say .net is concise, meanwhile it took someone with decades of experience 1 and a half hour to explain the versioning
You are conflating two things together here. This video explains over 20 years of history and how we got to where we are today so you have a better grasp on the naming conventions and reasoning behind them. If you just want to explain the versioning for what we have today (things being updated), we have .NET. Currently, we are on .NET 7, which is the Short-term Supported (STS) version (supported for 15 months). .NET 8 will come out in November and be the Long-term Supported (LTS) version (supported for 3 years). You get a new version of .NET each November and they alternate between STS and LTS. That's simple to explain. You just don't get the history about why we are here, where it came from, why .NET Framework is still around, etc.
27:26
IT TOOK ME AWHILE BEFORE I GET WEEL
iPhone releases are very predictable
Not really. They may be settling down, but the iPhone 8 was released in September, 2017. The iPhone X was released 2 months later. The iPhone 11 was released two years later. That's not exactly a predictable pattern.
@@IAmTimCorey they generally release in september, but there were indeed some exceptions. But they always delivered a complete phone and did not cut features like maui.
I'm an iPhone fan, but even I'll admit that's not the case. Releasing a phone two months after releasing a new phone was a big slap in the face. The X had features that the 8 did not, which meant that they released hardware that essentially wasn't complete. As for their software, they are consistently behind the competition in what they release. We hear about features that never make it to production. Finally, they release updates that are buggy. For example, here's an article dedicated to some of the issues of iOS 14 and how to fix them: www.techradar.com/news/ios-14-problems
The key, though, is that Apple is a different company than Microsoft, so when Microsoft has to create software that supports iOS, it can be difficult to manage. That can be true whether the software is amazing and predictable or not.
I just downloaded .NET 6 and 7 and realized it doesn't work with Visual Studio 2019🙂 I have 5.0 but it's not supported.
So now I also have to upgrade my visual studio. I hope SQL Server 2026 and Windows 12 are not prerequisites 🤣
So every time a new version comes out, I have to upgrade my visual studio - it's not even a choice, it's a mandate.
Watching this I can't help but get the sense that Microsoft's marketing team was desperately trying to push the version of .NET Core past 4.8 to make it superior. It reminds me of Spinal Tap's 11 volume knob.🤣🤣🤣
Marketing wasn't the reason why they moved past 4.8. That was their desire to get back to just .NET and reduce the confusion.
Thx for this video, but I don't know why you tried so hard to make it so long. so you would stuck in talking same thing over and over again.
I didn't try to make it "so long". I tried to cover all of the points of confusion around the topic. I could have said ".NET, which was .NET Core, is a rewrite of the .NET Framework and .NET Standard is the bridge between the two." and been done in less than 15 seconds. However, I think you would agree that this explanation is missing a bit of context. The things you want cut out of the video are things that someone else wanted in the video. And the things they wanted cut out are things you actually wanted.
If you have to make a 1and half hour long video to explain .NET versioning then may be they are doing it wrong.
I disagree. First, I was thorough in my explanation in order to address a wide audience. I could have said “.NET Core is a new product that replaces the .NET Framework” and called it good. Second, I hear lots of people complain about the naming, but I have yet to hear one viable alternative that is clearer.
@@IAmTimCorey wide audience? Do you think a Node.js or Java Developer or any other developer or a common Idiot has time to wait and watch 1 and half hour long video to understand JUST .NET VERSIONING?
Look, I'm a full-stack developer (Angular and .NET.) I started learning .NET from.NET5, but when I started my .NET journey in Industry the scenario is quite different and disgusting. Most of the projects are still in older .NET versions and people are not even willing to update them.
And If Microsoft wants .NET to be open for every platform they first need to ensure proper IDE and tools support to Linux users otherwise they can keep it to their SH*T OS.
I can understand .NET is pretty good now but the backslash it get's because of its earlier disgusting windows-specific development is good enough to keep it unpopular.
I think that is a pretty poor take. Yes, the .NET Framework was designed to work on Windows. Windows also owned 80+% of the market share at that time and Windows was how they made their money. It isn't "disgusting" to make a decision based on making money. You do that when you take a job. As for .NET not having a "proper" IDE on Linux, use Rider. It works great on Linux. Microsoft isn't obligated to provide you with exactly what you want. In fact, I think they've gone further than they "should" with free content (I really appreciate it, but I often question the business sense of it). Linux has a TINY market share. Even then, there isn't one Linux desktop, there are multiple. Also, Linux isn't really an operating system. It is a platform that operating systems are built on. That further fragments the market.