You may have a need to uninstall .NET Framework 3.5 SP1, perhaps for testing purposes or because you find it causes you some specific issue with an application you have. If this is the case, it’s important to realise that when you install .NET Framework 3.5 SP1 it actually updates the .NET 2.0 bits and the .NET 3.0 bits as well:
The thing to bear in mind is that .NET 2.0, .NET 3.0 and .NET 3.5 are not independent versions of the framework that can sit side by side or can co-exist without each other. The later versions are layered on top of the previous one. So you can have 2.0 without 3.0 and 3.5, and you can have 3.0 without 3.5 (but it still has 2.0 at its core) but you cannot have 3.5 without 3.0 and 2.0.
I think of it like this:
And after you’ve installed .NET 3.5 SP1 you have this:
Also, since the updates for the “inner” parts of the framework are “slipstream” installs it means that when you uninstall the service pack you are not just removing the update, you are removing “the framework and the service pack”.
In other words, to get your system back to the state it was before the .NET Framework 3.5 SP1 install you need to remove .NET Framework 3.5 SP1, .NET Framework 3.0 SP2 and .NET Framework 2.0 SP2 and then, assuming you want to have .NET Framework 3.5 on there you need to then reinstall that. Took me about 20 minutes and one reboot altogether.
Aaron Stebner has written a very useful blog post on doing this.