• C# 程序集是啥


    程序集,对于C#程序员来说一定不陌生,不就是VS生成的那些exe,dll么。是的,程序集(.net中exe与dll的区别就是exe有程序接入口, 即Main函数)就是.net框架下,可以被CLR加载并运行的一堆数据集(类似java中的jar包,无法脱离虚拟机自己运行)。它们和之前C\C++ 生成的可执行程序和动态链接库有本质的区别。

     

    说了半天,程序集里到底有什么呢。作为一堆数据集,程序集的数据可以分为:类型元数据,程序元数据,IL代码,资源。

      先说下什么是元数据,元数据一般就是指描述自身的数据。

      程序集元数据:包含程序集的版本信息,安全信息,签名等。

      类型元数据:记录了程序集将引用了哪些类,用户自定义了哪些类,字段,数据类型等一系列信息(VS的编程助手靠的就是反射获取类型元数据)。

      IL代码:MSIL,微软中间语言,微软跨语言的根基所在,所有的C#代码都编译成IL代码,保存在程序集中,在被CLR加载后,由JIT调用BCL,FTL即时编译成机器码来让CPU运行。

      资源:图片,视频,音频不一而足。
     
       那么为什么程序集要包含这么多数据呢?有没有想过?
       其实程序集是完全自我描述性的,它是一个逻辑单元,而不是一个物理单元。它包含程序的元数据,这样就可以被其他的应用程序或者程序集直接调用,而不需要像以前的COM组件一样要去指定注册表或其他数据源。而且,即使程序集分散在几个不同的地方,也不会造成因为各个文件信息不同步而调用错误的情况,因为包含程序集入口的文件也包含了其他文件的位置,散列和内容。若一个文件被替换,在加载的时候会被检测出来,拒绝程序集加载。
  • 相关阅读:
    dsp1
    数字信号处理中的常用方法
    近一星期的学习计划4-8 到 4-15
    近一个月的学习计划!4-8
    离散时间与系统-1
    python _列表
    2016-1-19
    fushioncharts 使用教程要点---使用JSON数据方式
    使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题
    MVC之路随记3--Html辅助方法
  • 原文地址:https://www.cnblogs.com/qiuyeyaozhuai/p/2719091.html
Copyright © 2020-2023  润新知