I understand your desire to remove the extraneous baggage of the .Net framework.
.Net apps require the Common Language Runtime (CLR) and all of its dependencies in order to compile the code on the fly. It uses a just-in-time (JIT) compiler to change the .Net app to machine code and run it instead of like a normal .exe file that is already in the form of machine code. The advantages of this can be found by searching the web for pages about the reasons for and against using .Net for development.
These apps also almost always require Assembly files which are code libraries used for deployment written in Common Intermediate Language (CIL) and then compiled into machine language at run time by the CLR just-in-time compiler. Kind of like standard library files in C or C++. In C or C++ they are compiled into the application as machine code, in .Net they are called and compiled as the application runs and therefore need to be accessible by the computer at runtime. In C or C++ you only use the libraries that you need while in .Net a lot of common libraries that you might need are made accessible to the computer (usually as files on the hard drive).
So, this means that you need a lot of luggage to run a .Net app.
Just about the only thing you can safely remove from the framework are assemblies that the program you want to run doesn't use and perhaps some of the files that support aspects of the CLR that the program does not use.
A daunting task to say the least.
My biggest complaint with programming for Microsoft products over the years (I am an MCSD) is that it is so hard to trim down a program to be as small as possible because of all the extras that are automatically thrown in. That said, I do enjoy using their tools and I like .Net. It's not perfect but I get things done for my clients faster because of it.
Hope this helps explain why it is difficult to only install a small part of the .Net Framework.
Edited by NeverSayDie, 27 January 2012 - 12:56 PM.