I’ve been programming in C and C++ in Linux for around 3 years, and recently have been interested in developing commercial software for businesses. Let’s say I’ve found a niche where I think I could be successful, but that they only use Windows. I have no experience whatsoever with the Windows API, however. I have a few questions:
Should I learn .NET?
Do I need to learn C# in order to use .NET, or can I stick with C++?
What is the sentiment about compiling using GCC under Cygwin with the –no-cygwin option? I’m interested in portability, and I’m worried that if I start writing for VC++, I might get bound to Windows.
Where is a good place to do my essential reading?
What else can you tell me about transitioning from Linux to Windows programming?
I faced exactly the same questions and I am so happy I tried .NET. I hope this info can help you:
Should I learn .NET?
I would highly recomment it.
Do I need to learn C# in order to use .NET, or can I stick with C++?
You can stick with C++ but I am sure you will love to learn C#, please try it. You will be able to mix them too. The main challenge with .NET is to learn all the libraries that are out there to help you out (so you do not need to reinvent the wheel). Use msdn often and try to get a map of the fundamental classes and assemblies.
It is a fun experience if you come from C++ you should not have major problems.
Where is a good place to do my essential reading?
I would start with something light, check the free Visual Studio tools, software and examples here, go to the MSDN documentation and compile some of the examples in MSDN (how to access files,…). As you can see you will find C# and C++ examples side by side.
Then of course books like C# via CLR will eventually need to be read.
Portability
Be sure you run your code in Mono and multiple platforms.
Future investment
Investing on learning the .NET framework will pay back. Today is costly to learn all the new tools out there, with .NET you know you can evolve. New features and languages appear but the fundamental classes remain so your time/effort investment is more under control.