从Visual Studio命令提示符运行ildasm.exe并打开任意.NET exe或DLL文件.双击Manifest,您将看到:
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}
Run Code Online (Sandbox Code Playgroud)
这告诉您正在查看的程序集依赖于另一个名为mscorlib的程序集.或者换句话说,程序集的元数据包含对它依赖的所有DLL的引用.查看其他.assembly指令以查看其他依赖项,我选择了一个你总能找到的依赖项.
该.ver条目很重要,它说明需要mscorlib的[AssemblyVersion].在我的情况下,版本2.0.0.0在您的情况下可能是4.0.0.0.用于该特定组件的两个最常见的版本.任何可能的自定义程序集,[AssemblyVersion]属性是非常重要的.
这.publickeytoken是有效性检查的一部分,它有助于在运行时验证程序集的强名称.加载程序集并启用强名称验证时会发生这种情况.仅在从不受信任的位置检索程序集时才启用它.
只要需要使用在另一个程序集中定义的类型的已编译代码,程序集就会被抖动加载.CLR的工作是从上面的.assembly参考中提供的信息中找到该程序集.请注意该信息如何不存储文件的路径.CLR定位该文件的方式本身就是一个很长的故事,MSDN Library关于它的文章很好地介绍了它.