一、      程序集定义

二、      程序集结构

通常,静态程序集可能由以下四个元素组成:

  • 程序集清单(manifest)

  • 类型元数据metadata和程序集元数据。

  • 实现这些类型的 Microsoft 中间语言 (MSIL) 代码。 它由编译器从一个或多个源代码文件生成。

  • 资源集。图片 xml 音频等

内容来源:https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/contents

三、      程序集类型

程序集是根据程序集的版本号 来区别。

CLI程序集可分为两类:进程程序集(EXE)、库程序集(DLL)。

注意:并不是.exe .dll文件都是.net程序集,com组件也是分为.exe .dll两种组件

其中.exe文件是一个自己执行的程序集,而.dll将被其他程序集加载后运行。

四、程序集清单

每个程序集都有一个程序集清单文件。 与目录类似,程序集清单包含以下内容:

  • 程序集的标识(名称和版本)。

  • 文件表,描述构成程序集的其他所有文件(例如,.exe 或 .dll 文件所依赖的你创建的其他程序集、位图文件或自述文件) 。

  • 程序集引用列表,即所有外部依赖项的列表,如 .dll 或其他文件 。 程序集既可以引用全局对象,也可以引用私有对象。 全局对象可用于所有其他应用程序。 在 .NET Core 中,全局对象与特定的 .NET Core 运行时结合使用。 在 .NET Framework 中,全局对象位于全局程序集缓存 (GAC) 中。 System.IO.dll 是 GAC 中程序集的一个示例。 私有对象必须位于级别不高于应用安装目录的目录中。

  • 模块,组成程序集的模块

由于程序集包含内容、版本控制和依赖项的相关信息,因此使用它们的应用程序不依赖 Windows 系统上的注册表等外部源也能正常运行。 程序集减少了 .dll 冲突,让应用程序变得更可靠、更易于部署。 在许多情况下,只需将 .NET 应用程序的文件复制到目标计算机,即可进行安装。

程序集编译为IL代码,这是一种中间语言。框架内部把IL字节码转换为本地的汇编代码。对于打印"Hello World"的程序,其等效的IL代码是:

 .method private hidebysig static void  Main(string[] args) cil managed {
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 11 (0xb)
.maxstack 1
IL_0000: ldstr "Hello World"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret } // end of method Class1::Main

内容来源:https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/view-contents

类型元数据metadata和程序集元数据。

程序集版本控制

https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/versioning

1.命名控件与程序集的区别。

命名空间用于对类型进行逻辑分组。程序集则是程序的物理分组,对应于一个dll或exe文件。

2.为什么要使用两种方式分组?把逻辑分组作为物理分组不是更简单吗?

     逻辑分组主要针对开发人员,而物理分组主要针对安装和部署。

【C#基础概念】程序集Assembliy的更多相关文章

  1. 【C#基础概念】程序集与托管模块的概念

    本文是为了学习程序集而整理的网上资料,主要包括两个部分,概念和使用,前部分讲怎样理解程序集,后部分讲述怎样使用的细节. 程序集与托管模块的概念 "程序集与托管代码块"(摘自Hima ...

  2. .NET技术面试题系列(1) 基础概念

    这是.NET技术面试题系列第一篇,今天主要分享基础概念. 1.简述 private. protected. public.internal 修饰符的访问权限 private : 私有成员, 在类的内部 ...

  3. .NET基础 (01).NET基础概念

    .NET基础概念 1 什么是CTS.CLS和CLR2 开发和运行.NET程序需要的最基本环节是什么3 .NET是否支持多编程语言开发4 CLR技术和COM技术的比较5 什么是程序集和应用程序域 1 什 ...

  4. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  5. .net基础概念

    .net基础概念 1.       .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件..NET Framework 具有两 ...

  6. 计算机系统4-> 计组与体系结构1 | 基础概念介绍

    在大二上学期学习数字逻辑的过程中,我对计算机如何运作产生了兴趣,因此开了这个系列来记录自己在这方面的学习过程,此前三篇分别是: 计算机系统->Hello World的一生 | 程序如何运行,从大 ...

  7. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  8. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  9. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  10. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

随机推荐

  1. NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  2. 集合框架-Map集合特点及常用方法

    1 package cn.itcast.p6.map.demo; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import ...

  3. 多线程-守护线程-setDaemon

    1 package multithread4; 2 /* 3 * 停止线程: 4 * 1,stop方法. 5 * 6 * 2,run方法结束. 7 * 8 * 怎么控制线程的任务结束呢? 9 * 任务 ...

  4. 关于new Date总结及注意事项

    记录关于 new Date() 的一些常用方法及问题 new Date()基本方法: 创建一个日期对象的几种方法 注意: 由于浏览器差异和不一致性,强烈建议不要使用Date构造函数(和Date.par ...

  5. ambari-hadoop集群管理web工具

    https://baike.baidu.com/item/Ambari/19697889?fr=aladdin https://www.ibm.com/developerworks/cn/openso ...

  6. docker四种模式

    1 host模式众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,MountNamespace隔离文件系统,Network Name ...

  7. 国内外免费对象存储和CDN加速额度

    标题: 国内外免费对象存储和CDN加速额度 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#免费,#对象存储,#CDN] 日期: 2022-01-29 国内对象存储和CDN加速 七 ...

  8. 布客·ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.1

    公告 我们正在招募项目负责人,完成三次贡献可以申请,请联系片刻(529815144).几十个项目等你来申请和参与,不装逼的朋友,我们都不想认识. 薅资本主义羊毛的 CDNDrive 计划正式启动! 我 ...

  9. Halcon视觉入门芯片识别

    Halcon视觉入门芯片识别 需求 有如下图的一个摆盘,摆盘的方格中摆放芯片,一个格子中只放一个,我们需要知道每个方格中是否有芯片去指导我们将芯片放到空的方格中. 分析 通过图片分析得出 我们感兴趣的 ...

  10. linux内存不足时,为了防止报错,可以使用swap

    1. 创建分区文件, 大小 2G dd if=/dev/zero of=/swapfile bs=1k count=2048000 2. 生成 swap 文件系统 mkswap /swapfile 3 ...