I did not uninstall .NET Framework 1.1 or 2.0 when I upgraded to .NET Framework 3.0 - I didn't dare! Today I was updating Paint.NET, and at the end of the installation it said it would optimize to my XP's performance. This however took forever and ever, so I looked inside Process Explorer and was surprised to see that the handled Windows file was named something with ".NET Framework 2", and not "3" as I have. So I am wondering if I can uninstall .NET Framework 1.1 and 2.0 without risking too much?? And if I can: in what order?

It doesn't hurt to keep previous versions of frameworks and I would be wary about removing something anything that is so integrated into the OS.

When loading an .NET app, the OS will first check if the matching version of the .NET framework that the app requires is there (e.g. 2.0 code => 2.0 framework), if not, it will ask a higher version of the framework to take over and execute the code (e.g. 2.0 code => 3.0 framework).

In theory, all Microsoft .NET framework are designed to be backward compatible. However from my experience, there are minute differences regarding how different versions of .net framework handles the same app. (The UI of my ancient release of Mobysaurus, which was built specifically for .NET 1.1, get rendered differently and distortedly in 2.0-only systems.)

But being here, I am bound to ask "YOU" for a link to the American Microsoft support forum (you know (I hope): "Ask the forum, and you might even get an answer from a MS support coworker"), because every time I've seeked it I have been redirected to the Danish MS site, which cannot help in any way if I don't have a lot of money - and I've lost the direct link together with my previous PC, and cannot remember the right name of the forum.

As I understand it you need to keep v1.1 because there were breaking changes moving onto 2.0. Apparently 3.0 just adds additional functions to 2.0. So at it's core you are still re-using the 2.0 framework which probably explains why you saw 2.0 mentioned. I'll just quote where I'm getting this info-

The .NET Framework 3.0 adds new technologies to the .NET Framework 2.0, which makes the .NET Framework 3.0 a superset of the .NET Framework 2.0. You can think of .NET Framework 3.0 as an "additive" release to the .NET Framework 2.0, as contrasted with a generational release where software is revised across the board. (For example, the .NET Framework 2.0 was a generational release over the .NET Framework 1.0.)

Because .NET Framework 3.0 is an additive release and uses the core run-time components from .NET Framework 2.0, it is completely backward compatible with the earlier version. Your existing .NET Framework 2.0 based-applications will continue to run without any modifications and you can safely continue your investments using the technologies that shipped with .NET Framework 2.0.

One of the main points to .NET is that you can keep them all on the same machine, and that they can peacefully co-exist. This is in direct opposition to how Java works (or doesn't work as the case may be).

.NET really is what Java wanted to be (or is going in that direction as Mono matures).

.NET 3.0 installs 2.0 as well. 3.0 is simply the "Vista version", as it installs most of the things used to make native applications in Vista, including bonus files as those involved with XPS. You really need 1.1 around, and Windows Update (the site, not Automatic Updates) lists it as an update. In short, you need a high amount of thrash to actually do something, like testing those crappy little applications programmed by kids who were told by someone that .NET was the new Visual Basic (no offense here, Wordzilla ).

If the .NET world was like Java... although I heard this does have its share of compatibility problems as well, but the proofs I saw were only lots of talking and no real evidence.

Thanks a lot for answering me, friends. The picture is very clear now; I am certainly gonna keep them all.

Thinking of what Wordzilla said, maybe it is better (when time comes) to upgrade to Vista from XP, rather than starting with Vista, otherwise I won't have .NET 1.1 and old programs may play unstable or not play at all?

... (The UI of my ancient release of Mobysaurus, which was built specifically for .NET 1.1, get rendered differently and distortedly in 2.0-only systems.)

If the .NET world was like Java... although I heard this does have its share of compatibility problems as well, but the proofs I saw were only lots of talking and no real evidence.

I'm not sure what you mean there.

I've only ever heard of 1 vendor having compatibility issues with more than 1 framework installed, but that was a very low level utility for .NET programmers, and only for that one specific application.

Java on the other hand... If you don't have the correct version installed, then you may run into problems. At the dayjob one customer is locked into a specific version of Java with bugs that affect how it compresses files. They are then not compatible with anything except Java itself - a bit of a problem there. He can't upgrade Java either... Not a good situation. That simply can't happen in .NET. You can always install another version of .NET and then just keep on going.

I was talking that, usually, in Java with a single JRE you can size them all (the apps, not the Pokemon ). I heard some comments about a nasty compatibility issue (that point updates, which are mostly security-related, caused) with a piece of software (not sure which), but the guy only said that it was causing problems. It was on the Ars OpenForum, where, as you may know, everyone is either a wizard coder or a mega-sized troll.

Of course, it could be possible, but with different versions of Java, as the APIs and the objects structure usually change with major updates. But at least Sun does extensive testing to ensure everything is right (so far, in my own experience, everything went right). Microsoft, in the other hand, simply develop .NET versions. Do you think that kind of fast development, constantly adding features and unneeded extras, would be possible if they had to ensure the maximum compatibility possible? No way, and the way they're going, we might end doing what Carol fears, only to ensure two or three apps could work in our machines (so far, I only have ATI's Catalyst Control Center and in the future, possibly Paint.NET). And considering that to ensure we have true Vista native applications we have to use .NET... well... I feel like o_O.

Well, .Net 3.5 should be out early next year, I've just set up the beta on my desktop in a VM.

But at least Sun does extensive testing to ensure everything is right (so far, in my own experience, everything went right). Microsoft, in the other hand, simply develop .NET versions. Do you think that kind of fast development, constantly adding features and unneeded extras, would be possible if they had to ensure the maximum compatibility possible?

I'm sorry, but I've got to say that this sounds like quite a troll. What does it mean to say that "Microsoft simply develop{s} .Net versions"? You seem to be implying that they don't do the extensive testing that you believe Sun does, but you haven't offered the slightest bit of a citation to support that. You go on to say they're "constantly adding ... unneeded extras". Which new features are unneeded, and on what basis do you deem them so? Past that, even by your own logic, "extras" wouldn't create the compatibility problems you insinuate. For example, as stated above in this thread, the upgrade from .Net 2 to .Net 3 did not change any core functionality; it simply layered additional features on top. Thus, regardless of any quality problems that you may have convinced yourself that MS has in comparison to Sun, new features like additional ADO.Net features (built to support the latest SQL Server) don't have the slightest effect on the established functionality like ASP.Net or WinForms. (Indeed, the development community criticized the naming of .Net 3, saying it should have been 2.5 or even 2 1/3)

That said, I think there is a legitimate gripe from the development community over the speed at which MS is moving the technology. It's difficult for developers to keep up -- we've barely mastered one technology when there's a new one up. And this is difficult for corporate development, since an IT department has trouble starting a project today when tomorrow there will be a (presumably) more advanced technology available. I'm afraid this will lead to more fragmentation in the development community. Today we've got Java, .Net, VB, Ruby, etc.; in the future we'll add Silverlight and others onto the list.

Yeah, I'm a troll! What I wanted to say is that Microsoft doesn't have to worry about backwards compatibility, while Sun does have. Prior the release of Java 6, Sun "called" all developers to test their apps under the new JRE, to ensure they had the less regression bugs as possible. Microsoft simply deploys the .NET Framework, and say: "there you have it, use whatever you fancy". For example, .NET 2 applications use .NET 2 even having .NET 3 installed.

Those extras are those things pertaining to Vista features, like the printing system. As you know, Microsoft developed a new printing subsystem, that uses XML-based files for the spooler. The guys said: "hey, considering that this is, essentially, a readable file, what if we do a new format based on it?" And thus came XPS. Microsoft did something similar with the printing subsystem prior Vista, and those spool files were the basis for the dreadful WMF pictures. Well, .NET includes XPS reader and printer to produce your own XPS files and challenge Adobe and PDF . They introduce that without asking, but then they are always saying they can't make DirectX10 for XP because of architectural changes, and bla, bla, bla...

The other day I was having troubles with one of my machines regarding the .NET framework. As you probably already know many Windows applications require that you have a specific version of the .NET framework installed (1.0, 1.1, 2.0, 3.0, 3.5, etc…) in order for them to function properly. Unfortunately Microsoft doesn’t make it very easy to repair or reinstall the .NET framework should it decide to go haywire on you.

The first thing I tried to do is uninstall .NET through the add/remove interface with the hopes of reinstalling it again once that completed. Those hopes were quickly dashed once the uninstall process failed miserably, and left me with a half-installed product that didn’t work. To make matters worse I couldn’t reinstall the .NET framework since the computer was saying that it was already installed, and repairing it was never offered as an option.

I began searching around the Internet to find out that I was far from the only person finding themselves in this little crisis. While looking for a solution I stumbled upon a handy little tool created by a Microsoft employee that will cleanup any .NET installations you have on your machine. It removes both both files and registry settings that .NET creates when it is installed on a computer, but it is recommended that you try to use the standard add/remove programs interface before resorting to this.

What makes this tool so nice is the fact that you can have it remove one specific version of .NET, or remove all of them at once. Just select the corresponding option from the drop-down menu, and you’ll be on your merry little way.

Not everyone may have the same problem I did, but it’s obvious that issues like this are fairly widespread. Maybe Microsoft will fix this in future releases of .NET, but this is one tool I’ll always keep handy.

There are a couple of very important caveats that you should read before using this tool to cleanup .NET Framework bits on your machine:

1. This tool is designed as a last resort for cases where install, uninstall or repair did not succeed for unusual reasons. It is not intended as a substitute for the standard uninstall procedure. You should try to perform an uninstall from Add/Remove Programs before using this cleanup tool. 2. This cleanup tool will delete shared files and registry keys used by other versions of the .NET Framework. If you run the cleanup tool, you will need to perform a repair or reinstall for all other versions of the .NET Framework that are on your computer to get them to work correctly afterwards.