Will it ever become obsolete?
Yes, I'm sure it will become obsolete at some point. I think it's safe to assume our descendants won't be using it in 1000 years. Now, the more interesting question is when it becomes obsolete.
- 5 years? Unlikely IMO.
- 10 years? Almost certainly still in use, but possibly not for new development; MS in "support but no new versions mode"? I suspect it will still be very much alive at that point, but I wouldn't be totally surprised if it had been eclipsed by something else. It partly depends on how Windows itself fares as a platform, I suspect.
- 20 years? I'd hope we've got better tools by then, but wouldn't be surprised to see significant maintenance development (including new versions of existing products) using the latest version of .NET at that point.
Why do you ask? I don't see it going anywhere in the near future. Perhaps Microsoft will rename it or rebrand it, etc., but the fundamentals should remain intact.
When does anything become obsolete? People are still using COBOL.
This is one of those questions... like, "What happens to you when you die?" Who the heck knows.
Given the amount of legacy COBOL and other code lying around, I'd say nothing ever becomes truly obsolete, although obviously tools and techniques evolve and languages, frameworks and approaches become outdated and less used.
Microsoft has committed a significant investment into .NET and is actively developing it, so I'd say that it's going to be around for quite a considerable time. I doubt we'll be using .NET in any currently recognisable form in, say 20-30 years' time, but it's not going to disapper overnight next week.
You could pose a similar question regarding, e.g. the Java platform - the language is still popular, and the JVM is even more so, considering the number of languages now be ported onto it; things like JRuby and Jython and so on.
Strong architectures are built to last.
Will it become obsolete? Definitely yes. Nothing lasts forever.(*)
Will that be soon? Definitely not. Windows is still the dominant plattform, and .Net is one of the most interesting frameworks for it. For the next 5-10 years it will stay. Probably longer, because it also evolves.
(*) Except for (;;)
of course...
The best defense for .NET to be around for the long haul is that even new theoretical ways of coding (which aren't theory anymore) have been implemented in .NET from lambda to functional coding. In fact everything a researcher thinks up a new coding mindset it's implemented in .NET either as an addition to C# or as a new language (ex: F#). The only concept of developing left is pure GUI based development (drag'n'drop) and Visual Studio is slowing offering that more and more with each new version.
Since .NET is so flexible you can freely add existing or new languages, I think it's safe to say the community will be using .NET 10yrs from now. You can't compare .NET's life to VB because VB is a language, but .NET is an expandable platform.
MS is more enthusiastic about .NET then I thought, which is great thing! People can't even keep up with the stuff. I'm still not developing tools using .NET Framework 3.5
That means just like they keep releasing a new Windows, they will maintain .NET and keep adding / fixing / improving stuff.
I expect a so much better Cross-Platform support from .NET in the future not only unofficial Mono but like Java, so many platforms will be supported.
But eventually (about 15 years) it might fade away. Since this is IT, there can be breakthroughs but at least 15 years .NET will be just fine.
If you're wondering how long until your .NET code is obsolete, then the answer is 1 or 2 years!
MS breaks things between every release of .NET, just about. So, there will always be things to 'fix'. Hopefully, they won't come out with too many more massive platform changes like WinForms -> WPF... where huge portions of the app need to be totally redone (or you just accept being obsolete).
Of course, other platforms have the same problem.
The .NET platform will continue to evolve and grow for maybe 10 years like others have said. The code you write now is going to be obsolete a lot earlier.
Once MS liked to support things for centuries - win32 had backwards-compatibility as a core tenent and you could guarantee your code would work on later versions of Windows with barely a recompile.
However, MS now is of the 'chuck it and rewrite it' mentality, so whilst .NET as a whole will be around for ages, don't expect your code to survive over the years. You'll have to upgrade regularly. MS likes upgrades - it sells more software.
The biggest issue you have though, is not whether .NET will become obsolete in this way, but whether something better will come along. Look at how quickly MS has dropped support for VB6, how little support for MFC is now available, how the job market for Java has tailed off. Something equally as fashionable will come along at some point, and then .NET will be seen as old and useless, code written in it will be seens as old and crufty (especially the early stuff as people learned), and everyone will want to move to the cool new technology.
The trick is to learn a few different technologies, or one that really has stood the test of time (C?). If you're a one trick pony, you'll become obsolete yourself eventually.