“为什么我的.net exe这么大”的分析工具?

时间:2012-02-16 14:53:36

标签: .net assemblies .net-assembly

是否有可以解释.NET程序集(可执行文件或DLL文件)大小的工具?

在过去,有一个IDE扩展可以详细说明项目使用的空间。

它应该显示大型代码文件:

Enter image description here

数据资源

Enter image description here

.NET世界有这样的东西吗?

我真的认为转移到.NET,不再需要将整个VCL构建到可执行文件中,可执行文件的大小会缩小。

奖金阅读

1 个答案:

答案 0 :(得分:8)

标准SDK使用了ILDASM(IL反汇编程序),在“视图”菜单中有“统计”选项,将其分解为:

 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

这应该是一个很好的起点。