Is there a tool that can explain the size of a .NET assembly (executable or DLL file)?
In the olden days, there was an IDE extension that would detail the space used
The standard SDK took ILDASM (IL Disassembler), had the "Statistics" option in the View menu, which broke it down like this:
File size : 3072
PE header size : 512 (456 used) (16.67%)
PE additional info : 167 ( 5.44%)
Num.of PE sections : 2
CLR header size : 72 ( 2.34%)
CLR meta-data size : 1572 (51.17%)
CLR additional info : 0 ( 0.00%)
CLR method headers : 15 ( 0.49%)
Managed code : 77 ( 2.51%)
Data : 512 (16.67%)
Unaccounted : 145 ( 4.72%)
Num.of PE sections : 2
.text - 2048
.reloc - 512
CLR meta-data size : 1572
Module - 1 (10 bytes)
TypeDef - 4 (56 bytes) 0 interfaces, 0 explicit layout
TypeRef - 15 (90 bytes)
MethodDef - 4 (56 bytes) 0 abstract, 0 native, 4 bodies
FieldDef - 2 (12 bytes) 0 constant
MemberRef - 15 (90 bytes)
ParamDef - 4 (24 bytes)
CustomAttribute- 13 (78 bytes)
StandAloneSig - 1 (2 bytes)
Assembly - 1 (22 bytes)
AssemblyRef - 1 (20 bytes)
Strings - 571 bytes
Blobs - 336 bytes
UserStrings - 8 bytes
Guids - 16 bytes
Uncategorized - 181 bytes
CLR method headers : 15
Num.of method bodies - 4
Num.of fat headers - 1
Num.of tiny headers - 3
Managed code : 77
Ave method size - 19
This should provide a good starting point.