【C#基础概念】程序集清单

.NET Core 程序集(模块)还包含描述程序集本身的元数据,我们称之为清单。清单记录了当前程序集正常运行所需的所有外部程序集、程序集的版本号、版权信息、模块 、资源(图片 xml等)等。与类型元数据一样,生成程序集清单也是由编译器的工作。

同样地,还是以上面 Calculator 类所在项目为例,我们也来看看程序集清单长什么样子。在 ildasm.exe 工具打开的程序集的目录树中,双击 MAINFEST 即可查看程序集的清单内容:

.assembly extern System.Runtime
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
  .ver 5:0:0:0
}
.assembly extern System.Console
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
  .ver 5:0:0:0
}
.assembly ConsoleApp
{
  ...
  .custom instance void ... TargetFrameworkAttribute ...
  .custom instance void ... AssemblyCompanyAttribute ...
  ...
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}
.module ConsoleApp.dll
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY

 

可以看到,程序集清单首先通过 .assembly extern 指令记录了它所引用的外部程序集。接着是当前程序集本身的信息,记录了程序集本身的各种特征,如版本号、模块名称等。

posted @ 2021-10-26 22:09  小林野夫  阅读(366)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/