I may be starting work on a new tool. I naturally want to do it in C# and even though I have used CPP for well over a decade, I really loathe doing anything else in it ever again. The lack of the super nice IDE that C# has doesn't help either. I get used to the suggestions of variables or members and nice single class .cs files and not dealing with headers, not to mention that C# is just flat out better.

The person who wants me to do this tool, they are very concerned that it might not run on a bunch of windows machines. He refers to it as the "Java" problem. What he really means, will we run into trouble with people not having the .Net framework installed?

My theory is this: If Microsoft is seriously trying to create a whole new core API, it would be pretty stupid to make it optional. The should make sure everyone always has the latest .Net framework via patches. I understand if you have an old copy of XP that didn't have .Net on it, that you do have a choice to install it via patches. However if you do install .Net x.0 that after some automatic updates you will be on 3.0. Also, XP service pack 2, IIRC installs .Net 1.0.

I am pretty sure my vista box came with .Net 2.0 on it, but now it has .Net 3.0 on it. I sure don't remember having to approve or ask for the upgrade. It just 'appeared'.

I could be completely wrong about this. How 'safe' is it to develop .Net applications and be assured they can run on an up-to-date machine? I mean, a user just puts the automatically download and notify / install and leaves it like that. If .net 4.0 were to come out, they would end up with .Net 4.0 fairly quickly, right?