I see you want "disk used when installed" not "download size". This is not a particularly useful thing to measure, and the answer is "You basically can't tell", but here's my data for interest's sake:
Looking in my windows directory, in the Microsoft.NET\Framework
directory (which is where the frameworks all live), on my windows vista PC, I have the following directories:
- v1.0.3705: 400 k
- v1.1.4322: 493 bytes
Note however, I don't actually have these frameworks installed. Vista probably just has some aliases for compatibility. You would never develop using these versions anyway as they're obsolete (and crap, in comparison to the newer stuff)
Now here's where it gets interesting.
- The 'Framework' directory itself has 356 k of files
- v2.0.50727: 152 MB
- v3.0: 10.5 MB
- v3.5: 24.7 MB
There's also the 'global assembly cache' in C:\Windows\assembly
, which on my PC runs to 530 MB, BUT some of those files are hardlinked into the other directories, so they don't count.
This is misleading however, as 3.0 and 3.5 run "on top of" 2.0, and you can't have them by themselves.
That's the raw data, but it's not as simple as just looking at the numbers like that.
I have visual studio 2005 and 2008 installed. That gets me hundreds of MB of debug dll's.
There is also the Microsoft Visual J# 2.0 Redistributable Package
which is part of installing visual studio, and not required on client PC's unless you use J# which nobody ever does. That's 7 MB
In addition to the debug copies of all the dll's, there is also XML documentation files, which total 69 MB in the framework\v2.0 directory
Anyone with Vista will already have the v2.0 and v3.0 directories, and their v2.0 directory will be quite a bit smaller unless they've also installed .NET 3.5. Unless you're targeting .NET 3.5 specifically, the "deployment cost" on Vista is therefore Zero.
For some more realistic 'client' data, I have a Windows XP SP2 PC with a basic install of .NET 2.0 only. Here's the numbers on that:
- Windows\Microsoft.NET\Framework\v2.0.50727: 64 MB
- Windows\assembly: 92 MB (note it's not really this big due to hardlinking)
I remember seeing '130 megabytes required' some time ago for .NET 2.0 on winXP, which sounds about right.
Now, this sounds like a lot, but here's some data to contrast it with:
The VC++ 2008 base dll's (vc, mfc, atl) are 10 meg, and they give you very little in the way of features. By the time you build a C++ application with any decent featureset, in my experience you're looking at around 4-5 meg of executables and dll's that you're shipping. In contrast, a comparably featured .NET app I built a while ago had 800k of dll's and executables, most of which were taken up with embedded icons and bitmaps.
It doesn't require all that many apps these days before the .NET runtime starts being a net win.