.net - "Why is my .net exe so huge"分析工具?

标签 .net assemblies .net-assembly

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

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

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

Enter image description here

和数据资源:

Enter image description here

.NET 世界有这样的事情吗?

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

奖励阅读

  • Analyze space used by .NET assembly
  • 最佳答案

    标准 SDK 采用 ILDASM(IL 反汇编程序),在“ View ”菜单中有“统计”选项,其分解如下:

     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
    

    这应该提供一个很好的起点。

    关于.net - "Why is my .net exe so huge"分析工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9313442/

    相关文章:

    .net - 使用 ILMerge 合并 .NET 3.5 和 .NET 2.0 程序集时出现问题

    .net - 在 LINQ 中与匿名类型不同(在 VB.NET 中)

    .net - 是否有 .NET 库或 API 来与/编辑 IIS 元数据库进行交互?

    c# - 创建堆栈大小为默认值 50 倍的线程时有什么危险?

    c# - 有没有办法按顺序执行一个实现类

    asp.net - Web 服务中的循环引用

    c# - 是否可以在 ASP.NET MVC3 中检索某个 Url 字符串的 Controller 实例?

    c# - 如何使用从程序集动态加载的接口(interface)并调用其成员

    ajax - Microsoft.Ajax.Utilities dll : Missing Assembly, 从哪里下载?

    c# - 为什么我在安装 VS2012/.Net 4.5 后在 .Net 4.0 Assembly.GetCustomAttributes 上出现 ExecutionEngineException?