We are currently migrating our Visual Basic 6.0 program to .NET. The target audience are just normal desktop users at home. Discussing this, we realized that we cannot come up with mainstream programs that seem to be written in .NET. Are we mistaken? Is there a good reason for this?
Depending on the definition of "main stream programs", there don't seem to be many of them to be written in VB6 either.
Of course, C# and VB.NET now has taken almost the place where VB6 was ~10 years ago. At least 98% is individual software you cannot buy in your local software store. But that does not mean there are no .NET programs out there. There are a lot - but you will have to search for them at the right places.
Your customer don't care if your program is written in .NET or not. Therefore, if you can ensure that the vast majority of your target audience can install and run your software without problems, you are good.
It's very difficult to find accurate information about .NET Framework penetration, so you shouldn't rely on any.
Why not targeting .NET Client Profile and ensure that it is installed along with your binaries? It's easy, simple and effective.
The .NET Framework 4 Client Profile is a subset of the .NET Framework 4 that is optimized for client applications. It provides functionality for most client applications, including Windows Presentation Foundation (WPF), Windows Forms, Windows Communication Foundation (WCF), and ClickOnce features. This enables faster deployment and a smaller install package for applications that target the .NET Framework 4 Client Profile.
I see another big advantage of porting your VB6 code to .NET: the ability to create version of your software that runs on Linux and OSX using Mono. Notable example of desktop applications written in .NET and cross platforms are available here.
My personal experience is that .NET is dominant in in-house, enterprise-level development. Most of these applications are not build for public consumption and so are not a part of our everyday vocabulary.
Still, there is a very compelling reason that so many large companies have adopted these technologies: programmer productivity and happiness. C# is a wonderful, productive programming language and the .NET ecosystem is rich with existing libraries to keep us having having to reinvent wheels. Also, WCF, while astoundingly complicated at times, is a very powerful framework for building communications between different systems.
In regard to your specific circumstance, I would only undertake the porting of your application if you will be doing lots of enhancements and changes to it in the future. If it is stable and in maintenance mode, you will regret any decision besides leaving it as-is.
Actually, according to TIOBE, C# (a .NET language) is now the fourth most popular language in the world.
Also, I agree with another poster that clients do not care what language your app is written in, as long as it works.
Decide if there are features your market wants that you can only or more easily create in .NET. Consider that hiring new developers is another market to consider. You may or may not find more VB.NET devs that are suitable to your needs (level of experience, knowledge of domain, etc.). Do your current developers really want to make the switch?
I don't know about the home user market, but the business market is pretty heavy in .net apps.
VB6 is no longer supported by MS any more (ref: http://blogs.technet.com/b/lifecycle/archive/2008/04/16/end-of-support-for-visual-basic-6-0.aspx). So if you have issues from a development standpoint, you will not get support from the source.
VB.NET, on the other hand, is still actively developed and supported.
The similarity between the .NET Framework and the Java JRE as well as the similarities between C# and Java itself has grown the C#/.NET developer community extremely quickly.
The supply of VB6 developers is going to dwindle while the VB.NET/C# ones are likely to increase and can keep your product moving forward.
we cannot come up with main stream programs that seem to be written in .Net.
I'm pretty sure the ATI Catalyst graphics card control panel is written in .NET - so that's basically every PC which has an ATI graphics card. Big numbers of normal desktop users...
Another good example is Samsung Kies - which most people who have Samsung phones have installed..
I suppose it doesn't matter - what might matter more is what will the majority of programs be written in, in the future. Now MS are focussing on Win8 apps, you'd possibly be better off worrying about the adoption of HTML5+js and WinRT rather than legacy .NET.
Last thing you want to do is port everything to .NET and then have to do a lot more rework to make it work well with Windows 8.