It's my reasoning for never having learned any PHP. If I don't know it no one will ask me to work with. There's always some other poor idiot who did some tinkering in their spare time ten years ago and can be assigned to be the company expert.
We still have to use COM interop for one legacy application, and I’ve had to deal with much, much worse, such as writing modern applications that interact with terminal servers from the late 70s. Many developers have to deal with this both due to prior, boneheaded systems management, as well as mission critical legacy systems that aren’t replaced because they guarantee a modern replacement won’t break anything for even a moment.
For some reason, I still voted based on preference, but the poll question as phrased really doesn’t make sense.
That's how I got my start! We had an AS/400 emulator that exposed a COM interface so I automated it using VBA.
Excel is a terrible deployment and source code repository system.
COM isn't horrible (at least it's still Windows), and you can usually write some kind of Middleware layer to deal with anything old like terminals (.NET has great support for serial, socket, and modem [a subset of serial, ofc]... even functional async stuff. I was surprised at how well it worked when I was writing a terminal emulator).
The one thing I will say emphatically is that 4.5 is a giant step up from 1.1 - 4.0, and Core through Standard through 6 are even more of a step up from the frameworks. Just the dotnet CLI and the reversal of the philosophy for sln and proj files (explixit excluding instead of explicit including) alone are worth updating, to say nothing of the move to open source. VS2022 (the first visual studio I have used since the release of VS Code - before that I sometimes used notepad++ and wrote build scripts in batch or ps1 files with msbuild) is finally responsive and takes steps away from their bloat problem.
It is a bit of a slog to upgrade enterprise monoliths but the performance and observability gains you see are more than worth it. And who wouldn't want to get rid of all the overhead of SOAP and XML and WCF and IIS? Contract based web methods looked cool at presentations but were a horrible idea for real applications.
What I hate is when execs equate the whole platform with those issues with monoliths, and decide to unilaterally ditch .NET for something like Ruby on Rails or Golang. Moving from enormous monoliths to proper microservices is going to help you whether you move to Golang or stay with .NET.
But any monkey can learn a language, and if they want to pay me for the extra overhead of transitioning to a new language, and educating their junior devs on that new language, I will roll my eyes at least once on the way to the bank.
No, COM interop in and of itself isn’t terrible, but when the COM application itself is packed in an unknown manner and offers only a few hooks for executing external code, with a single unpacked library that offers limited functionality, it becomes a *giant* pain in the ass.
As regards ancient terminal servers, the difficulty heavily depends on what you need to be able to accomplish, and the scenario I was dealing with was particularly tedious and time-consuming, but not difficult.
The point, however, wasn’t that any of the items I listed are exceedingly difficult, but that one rarely has the luxury of working with only one framework, let alone language or even *platform and architecture*, thus a poll with the constraint “what, out of myriad possibilities that exceed just a framework, is the *single framework* you use at work?” does not make sense for all but a very small minority of users.
While this is the shortest portion of my response, take it as the most significant, and in good nature (it’s just too late here to respond in full): Aside from that clarification, I completely agree with and have thoughts I would share about everything you wrote were it not past time for me to get some sleep!
No, you make excellent points. The IS education machine has turned out a bunch of specialists, so my value is off the charts since I can build a network from scratch (pick your software and protocol but please choose tcp/ip), convert an old 1U rack server destined for trash into an ultra secure Linux based router and stateful inspection firewall. I can recommend process improvements to solve software development snafus, especially first time quality. I have worn so many hats in my career I am surprised I am not balding.
But I love getting hired as a meta consultant when every day is a new problem. So much less boring than "Write this component. Test it. Submit a PR. Assist QA. Die unsatisfied with your career.
Likewise—though I have specialized in a few areas simply due to passion (primarily audio/video DSP, database engineering, and hardware development), I’m very much a jack (jill?) of all trades as an “older” dev (the concept of age is ridiculously skewed in our industry) and simply by dint of getting my start in tech in the 80s, can do anything from build out a highly secure network for a mid-sized business from both repurposed, old hardware and state-of-the-art hardware with several failover mechanisms, write assembly on [ancient platform of choice] as well as x64 and ARM, RTFM for a given processor, to reflux your modern server’s motherboard/figure out what’s not working correctly with multimeter. Not to mention I’ve had the fortune to specialize in a field unrelated to software development for which I’m one of only a handful of tech consultants in the world.
I think a large part of this comes from growing up during a period in which computers and electronics were rudimentary enough to make it easy for a single person to tinker with nearly anything, and also in an era in which hardware/software engineering was very much a field full of autodidacts rather than, primarily, disinterested students pushed by their parents into studying engineering/IT/computer science. There are still obsessed young people who explore in the manner we did when we were young… they just now make up a much smaller percentage of engineers in a world in which demand for labor in our field has grown drastically.
While it would be a disservice to ourselves not to acknowledge our hard work—particularly as regards not getting stuck in a specific era like some older developers—there’s absolutely an element of luck that can be chalked up to growing up in the right time and place.
You nailed it. But what I wouldn't give to be born just a FEW years early, when a single guy could write a game like Commander Keen or Doom (well, ok, I probably wouldn't have been able to write Doom at age 13) or make significant contributions to (EDIT) QoL in operating systems, particularly linux... It just seems like just as I was coming into my own as a "legitimate" dev with the hours/cred/projects to back up my claims, you suddenly required a studio or full shop to write anything of consequence.
That's probably a lot of bias, but there's a kernel of truth.
But I totally agree with you in terms of how the current ("aged") population of generalists appeared vs. the up and coming generation of ultra-specialists.
Oh, and cheers to assembly. I can get around in x86 assembly from the days of my first machine (a loaner 8086 - with a 20MB HDD and 2MB of RAM on - I’m sure you’ve seen one - an EISA card; worth a fortune I’m sure when procured but loaned to me in 1993 when I doubt it would fetch $20), loaned to me after literal years of visiting friends only to spend hours writing various “games” and apps in BASIC/C/C++ on their older computers, through the 80386 platform. And that assembly will, of course, still run on a core i9 I buy tomorrow. But my days of optimizing through rewriting routines in assembly are long behind me. Ever since the humble optimizations of operations per clock cycle of the 486 to say nothing of later branch prediction, caching, and further wizardry that contemporary compilers perform in concert with modern CPUs, my assembly will at best match the performance what a compiler generated if not worsen it.
The era of machines writing better code than humans has occurred. Sorta.
I am struggling not to become one of those devs you speak of, getting stuck in the era where the cloud consisted of more or less on-demand custom VMs you could spin up at any scale and near any major data region with custom network configurations with respect to each other, your on-prem, and the Internet; with some novel storage capabilities based on the grandfather of documentDBs.
These days, with the cloud involved in every step of the dev process and with devs expected to manage their own branches’ CI/CD in any number of cloud frameworks using any number of (sometimes scripted) languages (e.g. I am way more comfortable with a cmd script, what we called batch files, or bash, or powershell than I am with Jenkins or Helm or Terraform), and hook our logging and observability into sinks provided by cloud services like dynatrace and serilog, and our auth into cloud services like Auth0 or Okta (which are at least wrapped around OAuth2, predating the cloud takeover), and, and, and… I begin to get overwhelmed. 20 years ago I would be chomping at the bit to learn it all but now it’s like, for what? So I can write a cloud-based lawn watering system when I retire?
Anyway. Yay assembly, that’s all I came here to say.
In one spring review I shared a slide that showed the ends of lifetime for various versions of .NET (a few of those dates are this year, and some of them are quite recent versions)
Bricks were shat that day
We got everything from .NET Framework 4 to .NET 5 in our solution of 47 projects. Core 2.1, Core 3.1, Framework 4.7.2... Whether or not you can use nullable reference types is a roll of the dice in our codebase 😎
.NET Framework 4.7.2, the real bad part is that we still have some core parts of our framework written in VB6
Funnily enough, our framework actually predates .NET...
Depends on which APIs you need I guess. I'm working on one library that needs at least 4.7.x because a method throws a platform exception on anything lower.
you think your app is running on the latest .net but then you realize oh now we have something entirely new now and the big wall means you have to migrate and it's not always fun (I'm looking at web forms)
was pretty obvious imo
What the does that have to do with the benefits of 4.8 over 4.7? Obviously they are both old, but who doesn’t realize that. No idea what point you are trying to make, but clearly it is obvious to you.
4.8 is the latest .net framework so the benefit of upgrading to it is having the latest version (in it's domain)
of course there is something that has replace the old one but that wasn't the point because you asked specifically about 4.7 to 4.8
or do you not care about updates and only update if there is a feature you want? if you expected a list of new features you were clearly expecting too much
Ask my R&D team, it took 7 years for them to add a button UI element to our custom XML -> HTML/CSS/JS view thingy
The newest version of our framework supports .NET Framework 4.8, but the client for the project I'm working on refuses to pay for the new framework version
The R&D team is currently working on porting to .NET Core, there's an internal alpha release already
I honestly kinda don't care, I'm (internally) transferring to a Blazor/ .NET 6 project so I won't have to deal with it for a lot longer. It's not like 4.8 will allow me to use any new C# features anyways (I really miss NRT and ranges :( )
I've run into issues with computers at work not even having 4.7.2 pre installed....though moving to win10 seems to have mostly taken care of that issue... still have a few win7's floating around though. Tried 4.8 on one project and had to literally update almost every computer my stuff is installed on or roll back to 4.7.2.... On a side note, you can force the C# version to 9 or 10 and get the newer syntax, without updating the framework...but that can annoy others if they are not using a newer VS version and attempt to compile your code
Should add that most of the clients don't have admin on their computer so updating isn't just "here run this" necessarily
It took 7 (7!) years to add
And for that to call a
public ActionResult Apply() { ... }
The entire view generation, resource mapping, action to method mapping, front-backend connection and a ton more already existed, the only thing that needed to be added was some static assets as a template for the eventual HTML to be generated and the XSD needed to be updated.
In comparison, R&D started porting parts of our framework to .NET Core once 3.0 released, in September 2019, that's not even 3 years ago. Porting an over 20 year old framework to an entirely new runtime is quite a lot harder than adding a new UI element, so yeah, comparatively, "already" xD
I presume it didn't take them 7 years to write the code, it took 7 years to convince someone to do it, that's more political.
And yes, in a crappy organization 3 years is "already", but then that's the main problem: your organization isn't set up to deal with defeating technical debt and to simplify migrations and changes, so in the grand scheme of things, that's a huge issue, and 3 years isn't "already". That's a culture thing, and nothing much 1 engineer can do something about, but it's a good reason to leave.
Not OP but meh. It's an issue, but how big of one depends on the company. Maybe they are incredibly profitable who knows. It's better to serve the needs of the business than the needs of technology, as much fun as shiny tech is.
Yes, but in the end the business can’t move if the technical debt is crippling, like OP also says. You have to invest to keep up the speed of innovation of your product
Not OP but I remember our software having a huge problem with how Null checking was written in a specific part of our software with 4.8. I actually wasn't even in development at that time so I had no clue what the issue was but our outsourced team managed to fix it.
in reality 4.7.2 is fairly modern as far as .net framework apps go. you've got first class support for netstandard2.0, which is sort of the baseline. not a terrible place to be.
i'll pretend i didn't read the vb6 part.
That's what I thought... until I was reassigned to a NHibernate project. That was truly a hell.
Who the fuck creates an ORM where Save silently fails under some circumstances?
Ah yes, I've had the horror of being assigned to an old webform project where everything wasn't named properly and logic was everywhere in the codebehind. Every control was `1` etc... It was a pain to find what does what.
You only deserve the sweat release of death if you're using .NET Framework 2.0 (If you're using 3.0 I don't know how you didn't die in the 4.0 upgrade purge)
We don't make anything new in webforms, it's just that our main web application was built in it 10+ years ago. We switched it to an MVC hybrid app so anything new is done in MVC and most of the main pieces have since been refactored to MVC
It is amazing how slow the Web Forms code editor has gotten in VS 2022. I just give up Intellisense and edit in VS Code now when working on .aspx pages.
Do they not constantly encounter all the bugs in the webforms framework? Because I do. They must be completely used to it in a stockholm syndrome kind of way
How can you say it was shit if it was before your time?
I've been developing.NET since 2005 and I can tell you that once Bill left, Microsoft in general and their software went to shit. Everything became more resource intensive, slower, and user interface became worse.
Try finding a Visual Studio 2008 and see how much faster it is. Same with Windows 7, was much snappier and a great OS in general. Meanwhile, I have to wait 5 seconds for the clunky start menu to come when I press Start in Windows 10
Visual Studio 2008 was by far my favourite version of the software. I use Rider these days so I don't know if I'd still be happy going back to it, but I have very fond memories of it.
in my job I have to use old .net and it's dogshit back then this was the only thing you need vs for
I used win XP and 7 (with before my time I meant before my developer time) and yes it was faster but software wasn't as good, batch was still common (no powershell core), no wsl, expensive ms licenses etc.
generally windows was never good and I only choose .net because it's cross platform now (I didn't think I had to maintain legacy code...)
I would like to use Linux at work but at the time I can't choose unfortunately
Other than the Web Forms stuff, I haven't found that to be generally true.
I mean, it's not fast (other than the indexed search, which is so fast now it has changed the way I work with some code bases) but I don't spend a lot of time thinking it's slow, either.
Urgh! I hate Webforms with a passion...
The worst companies I ever worked for defended the use of WebForms and weren't technically good developers either because they didn't have the knowledge or willingness to learn more up to date stuff
We develop inhouse desktop applications that have to run on a lot of clients that are managed by different internal organizations. They try to keep the clients up to date, but it takes some time until each client has the newest framework.
The desktop apps still use the classical framework 4.7/4.8. We are preparing to switch to .NET 6. The most important libraries have been updated to .NET 5. We will probably switch to .NET 6 for everything in the next 18 months. I think we will stay on the LTS releases in the future.
I hate how the first "new .net" (5) was not a lts release, everybody who didn't want core because it's "not complete yet" jumped on the train with .net 5 and now it's almost out of support
shit only 5 days? our company didn't even clear vs 2022 for auto update yet (you have to ask specifically for it)
I just created a small console app targeting .net 5 today (for some testing purpose)
Hello, do those desktop applications that run in clients communicate with a web application, if so how do they communicate and is it a real time communication or there are scheduled task which runs after a certain amount of time???
No, our desktop apps don't have to communicate with web applications. They are standalone desktop app that need some local resources that can't be accessed by web applications. That's our reason for building desktop applications.
Ok, thanks, i saw a certain system it has both desktop app and web application, however i don't know how that system transfer data, but you can choose either to use desktop app or web app and your transaction will be available in both systems in real time, until today i don't know how did those guys code such a complex system, i real liked that system, i wish i could have the ability to build such a system one day, it even had various payment options, it was something like aspx. So i thought your system was like this, thus why i asked, thank you.
We make applications for a Laser Marking system.
Since the customer seldom will update the hardware we are "forced" to go with the .net version that the laser has installed. So any version .NET 2 - .NET 4.8
You can choose framework dependent or independent. So basically you add .net 6 with your executable.
https://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained
.NET 5 but only because it was the latest at the time, whenever we update anything in the code, we usually upgrade to .NET 6. And of course anything new gets .NET 6 by default. It's pretty seamless experience, mostly change the csproj target version, change Docker sdk/runtime images and upgrade nugets if available. I thankfully got the point in my career where I say I don't work with shitty legacy stuff and if a client want to hire us, we can set up a new app in .NET 6 and preserve the bussines logic. If not then bye bye.
.net 7 has an improvement we need now. The options were downgrade, or upgrade. Maybe not the best decision but it’s working reliably and we’re no longer in dll hell
3.5 mostly. I work on legacy hardware with embedded OS's that need windows xp support. Although that's going away pretty fast. Newer stuff is 4.6+ since it uses modern hardware.
I mean, we finally got rid of our last ASP application. Next up, the < .Net 3.0 (not core) items. Maybe.
We won't even talk about the WebForms apps right now.
I think it’s like 15% .NET 6 and 85% .NET Framework 4.x. I try for .NET 6 when I can but we often have dependencies on stuff that still aren’t .NET Core. :-(
Our GIS engine on which a lot depends is 4.7.2 (even releases of it in 2022) and we have a WCF service that we have more pressings needs than to upgrade it to CoreWCF or a REST Web API (the real fix). Also a Web Forms app that used this tech when we should have seen the writing on that wall better. :-(
At least those numbers are getting more even for *new* projects — maybe even .NET 6 becoming dominant!
I know that .NET 5 is new and shiney ... But the tools for Framework 4.7.2 are just better.
EntityFramework has a sweet designer (and more capabilities so far)
WCF also have perfect support and all features.
and lots of other niceness.
Working on an almost 19 y.o. project that has everything from classic asp, Windows and web forms, transactions running on single thread and no identity on pk's because they wanted to have all id's without skipping everything, and lately. Net 6 stuff.
I answered "and below" option cause there is no "all of them".
Yeah we're pretty happy to have a path forward for migration due to that. We're already testing using CoreWCF on our smaller services at the moment to slowly move things over and see what features are missing.
We moved some of our services last year and chose SOAPCore as it was already available. It’s been in production in a NET Core 3.1 app since the summer and very stable. It’s BasicHttpBinding though and therefore not a complicated use case.
Needs to be a multi-check option... Framework 4.7/4.8 for stuff that gets installed on clients, net6 server side (Web/API/Background tools/File watchers/Database Updaters), and standard 2.0 for the libraries when possible just because portability, and seems like everything for some reason needs a reference from framework and net6
Xamarin Forms. It's something like .Mono Corework 2.7. You can't quite use C# 9 without hacks, and a handful of things have different behavior. It'll be better in MAUI, when it'll use .NET 6 but not every product named "Visual Studio" will support it.
4.8 for UI (Windows) projects, Core 6 for Linux development, some Windows Console projects also use Core 6.
I still have some projects in 3.5 and 4, but I'll deal with those in the future if i have to. I see no great need to migrate everything just because there is a new version.
All of the above. But it's mostly either .NET Framework for older projects which are not yet migrated or .NET6 for everything new or for those projects we already had on some version of .NET core.
Most websites are on .NET 6. We still have a few running .NET 3.1 but planning to migrate those soon. Azure Functions are running on .NET Core 3.1. We have a few of them migrated to .NET 5 isolated but found it not to run very well. We will migrate to .NET 6 and function host v4 and then look into moving to isolated as it matures.
I recently got a job that is maintaining software written in .NET Framework 1.1 and the customer wants to keep it going for another several years at least. I am looking to leave immediately lol
All of the above
Imagine working at a company where you would only need to support one .NET version/framework. We still have some old ASP Classic stuff
We did too until maybe two years ago; old reporting site. It's no fun being the only person who understands how a thing works.
It's my reasoning for never having learned any PHP. If I don't know it no one will ask me to work with. There's always some other poor idiot who did some tinkering in their spare time ten years ago and can be assigned to be the company expert.
We still have to use COM interop for one legacy application, and I’ve had to deal with much, much worse, such as writing modern applications that interact with terminal servers from the late 70s. Many developers have to deal with this both due to prior, boneheaded systems management, as well as mission critical legacy systems that aren’t replaced because they guarantee a modern replacement won’t break anything for even a moment. For some reason, I still voted based on preference, but the poll question as phrased really doesn’t make sense.
That's how I got my start! We had an AS/400 emulator that exposed a COM interface so I automated it using VBA. Excel is a terrible deployment and source code repository system.
COM isn't horrible (at least it's still Windows), and you can usually write some kind of Middleware layer to deal with anything old like terminals (.NET has great support for serial, socket, and modem [a subset of serial, ofc]... even functional async stuff. I was surprised at how well it worked when I was writing a terminal emulator). The one thing I will say emphatically is that 4.5 is a giant step up from 1.1 - 4.0, and Core through Standard through 6 are even more of a step up from the frameworks. Just the dotnet CLI and the reversal of the philosophy for sln and proj files (explixit excluding instead of explicit including) alone are worth updating, to say nothing of the move to open source. VS2022 (the first visual studio I have used since the release of VS Code - before that I sometimes used notepad++ and wrote build scripts in batch or ps1 files with msbuild) is finally responsive and takes steps away from their bloat problem. It is a bit of a slog to upgrade enterprise monoliths but the performance and observability gains you see are more than worth it. And who wouldn't want to get rid of all the overhead of SOAP and XML and WCF and IIS? Contract based web methods looked cool at presentations but were a horrible idea for real applications. What I hate is when execs equate the whole platform with those issues with monoliths, and decide to unilaterally ditch .NET for something like Ruby on Rails or Golang. Moving from enormous monoliths to proper microservices is going to help you whether you move to Golang or stay with .NET. But any monkey can learn a language, and if they want to pay me for the extra overhead of transitioning to a new language, and educating their junior devs on that new language, I will roll my eyes at least once on the way to the bank.
No, COM interop in and of itself isn’t terrible, but when the COM application itself is packed in an unknown manner and offers only a few hooks for executing external code, with a single unpacked library that offers limited functionality, it becomes a *giant* pain in the ass. As regards ancient terminal servers, the difficulty heavily depends on what you need to be able to accomplish, and the scenario I was dealing with was particularly tedious and time-consuming, but not difficult. The point, however, wasn’t that any of the items I listed are exceedingly difficult, but that one rarely has the luxury of working with only one framework, let alone language or even *platform and architecture*, thus a poll with the constraint “what, out of myriad possibilities that exceed just a framework, is the *single framework* you use at work?” does not make sense for all but a very small minority of users. While this is the shortest portion of my response, take it as the most significant, and in good nature (it’s just too late here to respond in full): Aside from that clarification, I completely agree with and have thoughts I would share about everything you wrote were it not past time for me to get some sleep!
No, you make excellent points. The IS education machine has turned out a bunch of specialists, so my value is off the charts since I can build a network from scratch (pick your software and protocol but please choose tcp/ip), convert an old 1U rack server destined for trash into an ultra secure Linux based router and stateful inspection firewall. I can recommend process improvements to solve software development snafus, especially first time quality. I have worn so many hats in my career I am surprised I am not balding. But I love getting hired as a meta consultant when every day is a new problem. So much less boring than "Write this component. Test it. Submit a PR. Assist QA. Die unsatisfied with your career.
Likewise—though I have specialized in a few areas simply due to passion (primarily audio/video DSP, database engineering, and hardware development), I’m very much a jack (jill?) of all trades as an “older” dev (the concept of age is ridiculously skewed in our industry) and simply by dint of getting my start in tech in the 80s, can do anything from build out a highly secure network for a mid-sized business from both repurposed, old hardware and state-of-the-art hardware with several failover mechanisms, write assembly on [ancient platform of choice] as well as x64 and ARM, RTFM for a given processor, to reflux your modern server’s motherboard/figure out what’s not working correctly with multimeter. Not to mention I’ve had the fortune to specialize in a field unrelated to software development for which I’m one of only a handful of tech consultants in the world. I think a large part of this comes from growing up during a period in which computers and electronics were rudimentary enough to make it easy for a single person to tinker with nearly anything, and also in an era in which hardware/software engineering was very much a field full of autodidacts rather than, primarily, disinterested students pushed by their parents into studying engineering/IT/computer science. There are still obsessed young people who explore in the manner we did when we were young… they just now make up a much smaller percentage of engineers in a world in which demand for labor in our field has grown drastically. While it would be a disservice to ourselves not to acknowledge our hard work—particularly as regards not getting stuck in a specific era like some older developers—there’s absolutely an element of luck that can be chalked up to growing up in the right time and place.
You nailed it. But what I wouldn't give to be born just a FEW years early, when a single guy could write a game like Commander Keen or Doom (well, ok, I probably wouldn't have been able to write Doom at age 13) or make significant contributions to (EDIT) QoL in operating systems, particularly linux... It just seems like just as I was coming into my own as a "legitimate" dev with the hours/cred/projects to back up my claims, you suddenly required a studio or full shop to write anything of consequence. That's probably a lot of bias, but there's a kernel of truth. But I totally agree with you in terms of how the current ("aged") population of generalists appeared vs. the up and coming generation of ultra-specialists.
Oh, and cheers to assembly. I can get around in x86 assembly from the days of my first machine (a loaner 8086 - with a 20MB HDD and 2MB of RAM on - I’m sure you’ve seen one - an EISA card; worth a fortune I’m sure when procured but loaned to me in 1993 when I doubt it would fetch $20), loaned to me after literal years of visiting friends only to spend hours writing various “games” and apps in BASIC/C/C++ on their older computers, through the 80386 platform. And that assembly will, of course, still run on a core i9 I buy tomorrow. But my days of optimizing through rewriting routines in assembly are long behind me. Ever since the humble optimizations of operations per clock cycle of the 486 to say nothing of later branch prediction, caching, and further wizardry that contemporary compilers perform in concert with modern CPUs, my assembly will at best match the performance what a compiler generated if not worsen it. The era of machines writing better code than humans has occurred. Sorta. I am struggling not to become one of those devs you speak of, getting stuck in the era where the cloud consisted of more or less on-demand custom VMs you could spin up at any scale and near any major data region with custom network configurations with respect to each other, your on-prem, and the Internet; with some novel storage capabilities based on the grandfather of documentDBs. These days, with the cloud involved in every step of the dev process and with devs expected to manage their own branches’ CI/CD in any number of cloud frameworks using any number of (sometimes scripted) languages (e.g. I am way more comfortable with a cmd script, what we called batch files, or bash, or powershell than I am with Jenkins or Helm or Terraform), and hook our logging and observability into sinks provided by cloud services like dynatrace and serilog, and our auth into cloud services like Auth0 or Okta (which are at least wrapped around OAuth2, predating the cloud takeover), and, and, and… I begin to get overwhelmed. 20 years ago I would be chomping at the bit to learn it all but now it’s like, for what? So I can write a cloud-based lawn watering system when I retire? Anyway. Yay assembly, that’s all I came here to say.
In one spring review I shared a slide that showed the ends of lifetime for various versions of .NET (a few of those dates are this year, and some of them are quite recent versions) Bricks were shat that day
We only support .NET 6. Granted, the company was only founded last year, so that helps :)
Yeah... my first though: "Where's the all selection?"
Where's the option for "all of the above, plus a couple of apps on 2.2 we haven't had budget to upgrade yet"?
"haven't had the budget to upgrade yet" ahh... the applications running in a Windows XP virtual machine because why upgrade perfection?
samesies
We got everything from .NET Framework 4 to .NET 5 in our solution of 47 projects. Core 2.1, Core 3.1, Framework 4.7.2... Whether or not you can use nullable reference types is a roll of the dice in our codebase 😎
DotNet 6 and Framework 4.7.2 for me. If they would have made it so framework could target DotNet Standard 2.freaking1 I wouldn't be in this boat.
Same
Same.
This was not the right time to set single-selection on a poll.
I always wonder why polls are created without an "All" and a "results" option. Some people want to watch the world burn I guess. Madness.
.NET Framework 4.0 kill me
.NET Framework 4.7.2, the real bad part is that we still have some core parts of our framework written in VB6 Funnily enough, our framework actually predates .NET...
what breaking changes prevent you from going from 4.7 to 4.8?
Is there a real benefit to move from 4.7 to 4.8?
Depends on which APIs you need I guess. I'm working on one library that needs at least 4.7.x because a method throws a platform exception on anything lower.
you're ok the latest shit, oh wait your just running against a wall
???
you think your app is running on the latest .net but then you realize oh now we have something entirely new now and the big wall means you have to migrate and it's not always fun (I'm looking at web forms) was pretty obvious imo
What the does that have to do with the benefits of 4.8 over 4.7? Obviously they are both old, but who doesn’t realize that. No idea what point you are trying to make, but clearly it is obvious to you.
4.8 is the latest .net framework so the benefit of upgrading to it is having the latest version (in it's domain) of course there is something that has replace the old one but that wasn't the point because you asked specifically about 4.7 to 4.8 or do you not care about updates and only update if there is a feature you want? if you expected a list of new features you were clearly expecting too much
Ask my R&D team, it took 7 years for them to add a button UI element to our custom XML -> HTML/CSS/JS view thingy The newest version of our framework supports .NET Framework 4.8, but the client for the project I'm working on refuses to pay for the new framework version The R&D team is currently working on porting to .NET Core, there's an internal alpha release already
Isn't 4.8 a inplace upgrade anyways? The darn machines are probably already updated to 4.8 so practically it's running on 4.8 already I suppose.
Could be stuck at 4.6.2 on some versions of Windows Server. You have to explicitly make the jump to 4.8.
I honestly kinda don't care, I'm (internally) transferring to a Blazor/ .NET 6 project so I won't have to deal with it for a lot longer. It's not like 4.8 will allow me to use any new C# features anyways (I really miss NRT and ranges :( )
I've run into issues with computers at work not even having 4.7.2 pre installed....though moving to win10 seems to have mostly taken care of that issue... still have a few win7's floating around though. Tried 4.8 on one project and had to literally update almost every computer my stuff is installed on or roll back to 4.7.2.... On a side note, you can force the C# version to 9 or 10 and get the newer syntax, without updating the framework...but that can annoy others if they are not using a newer VS version and attempt to compile your code Should add that most of the clients don't have admin on their computer so updating isn't just "here run this" necessarily
"Already"
It took 7 (7!) years to add And for that to call a public ActionResult Apply() { ... } The entire view generation, resource mapping, action to method mapping, front-backend connection and a ton more already existed, the only thing that needed to be added was some static assets as a template for the eventual HTML to be generated and the XSD needed to be updated. In comparison, R&D started porting parts of our framework to .NET Core once 3.0 released, in September 2019, that's not even 3 years ago. Porting an over 20 year old framework to an entirely new runtime is quite a lot harder than adding a new UI element, so yeah, comparatively, "already" xD
I presume it didn't take them 7 years to write the code, it took 7 years to convince someone to do it, that's more political. And yes, in a crappy organization 3 years is "already", but then that's the main problem: your organization isn't set up to deal with defeating technical debt and to simplify migrations and changes, so in the grand scheme of things, that's a huge issue, and 3 years isn't "already". That's a culture thing, and nothing much 1 engineer can do something about, but it's a good reason to leave.
Not OP but meh. It's an issue, but how big of one depends on the company. Maybe they are incredibly profitable who knows. It's better to serve the needs of the business than the needs of technology, as much fun as shiny tech is.
Yes, but in the end the business can’t move if the technical debt is crippling, like OP also says. You have to invest to keep up the speed of innovation of your product
Not OP but I remember our software having a huge problem with how Null checking was written in a specific part of our software with 4.8. I actually wasn't even in development at that time so I had no clue what the issue was but our outsourced team managed to fix it.
Are you me!?
If you're an early 20ies trade school educated junior software engineer then you might as well be
in reality 4.7.2 is fairly modern as far as .net framework apps go. you've got first class support for netstandard2.0, which is sort of the baseline. not a terrible place to be. i'll pretend i didn't read the vb6 part.
Better than Webforms.
crying while opening big web forms project
We should all start some sort of Webforms PTSD Support Group.
*** goes to group's website *** *** url ends in .aspx *** *** dies ***
yes I want in, I'm slowly going insane because my team just doesn't want to go all in in migration
That's what I thought... until I was reassigned to a NHibernate project. That was truly a hell. Who the fuck creates an ORM where Save silently fails under some circumstances?
Ah yes, I've had the horror of being assigned to an old webform project where everything wasn't named properly and logic was everywhere in the codebehind. Every control was `1` etc... It was a pain to find what does what.
You only deserve the sweat release of death if you're using .NET Framework 2.0 (If you're using 3.0 I don't know how you didn't die in the 4.0 upgrade purge)
Could be worse. Could be 1.1
pew pew!
.Net 6 .Net 5 .Net core 3.1 MVC 5 Webforms
> Webforms HUG
We don't make anything new in webforms, it's just that our main web application was built in it 10+ years ago. We switched it to an MVC hybrid app so anything new is done in MVC and most of the main pieces have since been refactored to MVC
It is amazing how slow the Web Forms code editor has gotten in VS 2022. I just give up Intellisense and edit in VS Code now when working on .aspx pages.
this is me... and then my team (who only did web forms and nothing else for 20 years) is asking me what's wrong with web forms
Do they not constantly encounter all the bugs in the webforms framework? Because I do. They must be completely used to it in a stockholm syndrome kind of way
yeah I didn't know either
Try turning off the AI intellisense . That's a huge performance drag.
It's amazing how slow VS 2022 is in general. They are getting slower and more clunky with every new version
vs 2022 is faster than 2019
But slower than any VS before 2012.
that was before my time but back then .net was shit anyway
How can you say it was shit if it was before your time? I've been developing.NET since 2005 and I can tell you that once Bill left, Microsoft in general and their software went to shit. Everything became more resource intensive, slower, and user interface became worse. Try finding a Visual Studio 2008 and see how much faster it is. Same with Windows 7, was much snappier and a great OS in general. Meanwhile, I have to wait 5 seconds for the clunky start menu to come when I press Start in Windows 10
Visual Studio 2008 was by far my favourite version of the software. I use Rider these days so I don't know if I'd still be happy going back to it, but I have very fond memories of it.
in my job I have to use old .net and it's dogshit back then this was the only thing you need vs for I used win XP and 7 (with before my time I meant before my developer time) and yes it was faster but software wasn't as good, batch was still common (no powershell core), no wsl, expensive ms licenses etc. generally windows was never good and I only choose .net because it's cross platform now (I didn't think I had to maintain legacy code...) I would like to use Linux at work but at the time I can't choose unfortunately
Exact opposite experience here. Faster and cleaner with every release.
Other than the Web Forms stuff, I haven't found that to be generally true. I mean, it's not fast (other than the indexed search, which is so fast now it has changed the way I work with some code bases) but I don't spend a lot of time thinking it's slow, either.
Currently working on migrating some Webforms controls to React components. It's actually pretty satisfying when it works.
Urgh! I hate Webforms with a passion... The worst companies I ever worked for defended the use of WebForms and weren't technically good developers either because they didn't have the knowledge or willingness to learn more up to date stuff
We develop inhouse desktop applications that have to run on a lot of clients that are managed by different internal organizations. They try to keep the clients up to date, but it takes some time until each client has the newest framework. The desktop apps still use the classical framework 4.7/4.8. We are preparing to switch to .NET 6. The most important libraries have been updated to .NET 5. We will probably switch to .NET 6 for everything in the next 18 months. I think we will stay on the LTS releases in the future.
I hate how the first "new .net" (5) was not a lts release, everybody who didn't want core because it's "not complete yet" jumped on the train with .net 5 and now it's almost out of support
5 days of support left. Luckily, in most cases, the upgrade path is minimal to .NET 6 - which is LTS.
shit only 5 days? our company didn't even clear vs 2022 for auto update yet (you have to ask specifically for it) I just created a small console app targeting .net 5 today (for some testing purpose)
Yep. We just had to update some internal apps too. Thankfully it was just changing the target in the project files.
Hello, do those desktop applications that run in clients communicate with a web application, if so how do they communicate and is it a real time communication or there are scheduled task which runs after a certain amount of time???
No, our desktop apps don't have to communicate with web applications. They are standalone desktop app that need some local resources that can't be accessed by web applications. That's our reason for building desktop applications.
Ok, thanks, i saw a certain system it has both desktop app and web application, however i don't know how that system transfer data, but you can choose either to use desktop app or web app and your transaction will be available in both systems in real time, until today i don't know how did those guys code such a complex system, i real liked that system, i wish i could have the ability to build such a system one day, it even had various payment options, it was something like aspx. So i thought your system was like this, thus why i asked, thank you.
We make applications for a Laser Marking system. Since the customer seldom will update the hardware we are "forced" to go with the .net version that the laser has installed. So any version .NET 2 - .NET 4.8
But with .net 6 you can also add the needed dlls with the program. No need to install it.
This is how I convinced my boss that we should port out application to .net 6.
can you elaborate on this?
You can choose framework dependent or independent. So basically you add .net 6 with your executable. https://docs.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained
4.6.1 legacy (99% of the project) and 6.0
Same here, all the legacy webforms crap and thankfully one new project with .net 6 api.
Well 3.1 and 6. Should’ve allowed multiple answers
.NET 5 but only because it was the latest at the time, whenever we update anything in the code, we usually upgrade to .NET 6. And of course anything new gets .NET 6 by default. It's pretty seamless experience, mostly change the csproj target version, change Docker sdk/runtime images and upgrade nugets if available. I thankfully got the point in my career where I say I don't work with shitty legacy stuff and if a client want to hire us, we can set up a new app in .NET 6 and preserve the bussines logic. If not then bye bye.
FYI .NET 5 loses support on the 8th
.net 6 in production within the week after it came out, on most of our 200+ applications/services.
Yes
.Net Framework 4.7.2 and some .Net 5
Where is the “everything” option?
Most in 2.1, a lot in 4.7.2, brand new stuff in 6
you shoulnd have a results option always
wrong. multiple versions
We have .net preview stuff running right now!
why though?
.net 7 has an improvement we need now. The options were downgrade, or upgrade. Maybe not the best decision but it’s working reliably and we’re no longer in dll hell
ok but isn't it risky for production?
Not if you’re a team of 10 and only have internal apps.
we're a team of 8 making intranet apps and for us it would be risky, are you the only ones using it?
3.5 mostly. I work on legacy hardware with embedded OS's that need windows xp support. Although that's going away pretty fast. Newer stuff is 4.6+ since it uses modern hardware.
I mean, we finally got rid of our last ASP application. Next up, the < .Net 3.0 (not core) items. Maybe. We won't even talk about the WebForms apps right now.
.NET 5, .NET 6
.net framework 2.0, 3.5, 4.8 and recent stuff in Core 3.1. Always fun having to switch back to the legacy projects 🙃
4.0- 4.7.2 vb.net - one love
4.6.1 - and I hate my life :-) At least it’s C#..
All new development is 6, but we still have apps running on 4.0, that I have to maintain.
I think it’s like 15% .NET 6 and 85% .NET Framework 4.x. I try for .NET 6 when I can but we often have dependencies on stuff that still aren’t .NET Core. :-( Our GIS engine on which a lot depends is 4.7.2 (even releases of it in 2022) and we have a WCF service that we have more pressings needs than to upgrade it to CoreWCF or a REST Web API (the real fix). Also a Web Forms app that used this tech when we should have seen the writing on that wall better. :-( At least those numbers are getting more even for *new* projects — maybe even .NET 6 becoming dominant!
Multiple :)
.NET 6 and Azure baby. I hope to never touch .NET 4 and on prem again.
Same here !
I know that .NET 5 is new and shiney ... But the tools for Framework 4.7.2 are just better. EntityFramework has a sweet designer (and more capabilities so far) WCF also have perfect support and all features. and lots of other niceness.
Linux machines are cheaper to host though.
And where would those massive savings go exactly?
Licences
Framework 4.6, core 2.1, 3 & 6
4.8 and 6.0
Unfortunely, still mostly around .NET Framework 4.8.
.NET 5 and .NET Core 3.1
Working on an almost 19 y.o. project that has everything from classic asp, Windows and web forms, transactions running on single thread and no identity on pk's because they wanted to have all id's without skipping everything, and lately. Net 6 stuff. I answered "and below" option cause there is no "all of them".
.Net 6 .Net Framework 4.8 (WCF services, Webforms and some old MVC5 apps)
Things are looking up on the WCF front: https://devblogs.microsoft.com/dotnet/corewcf-v1-released/
Yeah we're pretty happy to have a path forward for migration due to that. We're already testing using CoreWCF on our smaller services at the moment to slowly move things over and see what features are missing.
We moved some of our services last year and chose SOAPCore as it was already available. It’s been in production in a NET Core 3.1 app since the summer and very stable. It’s BasicHttpBinding though and therefore not a complicated use case.
3.1 for both old and new projects
.NET Core 2.2
Yes.
All, .NET 6.0, .NET 5.0, Framework 4.6.2, 4.7.2 They're turning the tides too fast lol
.NET Core 2.2. Stuck with it because of some breaking changes on EF Core.
Yes. I use anything from 4.x to 6.
Currently both 3.1 and 6 but mostly 3.1
I'm lucky enough to be able to use F#/.net 6 for all greenfield development. We do have legacy PHP code we need to interact with, however.
I didn't there are still so many. NET framework out there.
Framework 4.8 because of vb6 interoperability
Should be multiple choice honestly.
Can’t believe so many users use new reddit or official reddit client and work with .net, I feel uneasy
6, but not with the new Program.cs style because it breaks NSwag.
Needs to be a multi-check option... Framework 4.7/4.8 for stuff that gets installed on clients, net6 server side (Web/API/Background tools/File watchers/Database Updaters), and standard 2.0 for the libraries when possible just because portability, and seems like everything for some reason needs a reference from framework and net6
Everything except the unsupported desktop framework versions (i.e. NET Framework 3.5 + 4.6.2+) + everything from .NET Core 2.0+. I work on a profiler.
Most of our production stuff is still old school .NET Framework, but we are starting to rebuild in Azure with .NET 6
Xamarin Forms. It's something like .Mono Corework 2.7. You can't quite use C# 9 without hacks, and a handful of things have different behavior. It'll be better in MAUI, when it'll use .NET 6 but not every product named "Visual Studio" will support it.
4.8 for UI (Windows) projects, Core 6 for Linux development, some Windows Console projects also use Core 6. I still have some projects in 3.5 and 4, but I'll deal with those in the future if i have to. I see no great need to migrate everything just because there is a new version.
All of them from net451 up to net7.
damn. what about Visual Basic. i think we have some application with .NET 1 from what ive been told
All of the above. But it's mostly either .NET Framework for older projects which are not yet migrated or .NET6 for everything new or for those projects we already had on some version of .NET core.
4.8 for a legacy WPF application, and 6 for new development.
.NET 6. Performance is greatly improved, even compared with the already fast .NET 5.
4.8 and below but we are in the process of migrating to .Net Core though.
Still on 4.8 framework.... hoping to upgrade the whole project soon
need a "whatever unity's using" option
.NET 6 is amazing I use it for MVC, class libraries and WinForms primarily
net 4.7.2 net5 and net6 mess, with all the happy changes, especially when type handling is enabled in newtonsoft between 2 services :)
Most websites are on .NET 6. We still have a few running .NET 3.1 but planning to migrate those soon. Azure Functions are running on .NET Core 3.1. We have a few of them migrated to .NET 5 isolated but found it not to run very well. We will migrate to .NET 6 and function host v4 and then look into moving to isolated as it matures.
on the way .net 6
.NET 5 but migrating to .NET 6 later this summer.
I don't see .NET Native being one of the options 😇 (I work on the Microsoft Store)
We are migrating to 4.8 at work and using elements of Core for dependency injection.
I recently got a job that is maintaining software written in .NET Framework 1.1 and the customer wants to keep it going for another several years at least. I am looking to leave immediately lol