【C#程序集】程序集
.net 程序集的组成:
程序集由元数据、清单、il 、资源

.net程序集名称
强名称程序集有一个完全限定的名称,由程序集的名称、区域性、公钥、版本号以及(可选)处理器体系结构组成。 使用 FullName 属性来获取已加载程序集的完全限定名称,该名称通常称为显示名称。
运行时使用此名称信息来定位程序集并将其同其他同名的程序集区分开。 例如,名为 myTypes 的强名称程序集可以具有下列完全限定名:
myTypes, Version=1.0.1234.0, Culture=en-US, PublicKeyToken=b77a5c561934e089c, ProcessorArchitecture=msil
在此例中,完全限定名称表明myTypes程序集的强名称具有公钥标记、区域性值为美国英语、版本号为 1.0.1234.0。 它的处理器体系结构为msil,表示程序集将以实时 (JIT) 方式编译为 32 位代码或 64 位代码(具体取决于操作系统和处理器)。ProcessorArchitecture=msil处理器体系结构对于强名称不是必需的
请求程序集中的类型的代码必须使用完全限定的程序集名称。 这称为完全限定绑定。 在 .NET Framework 中引用程序集时不允许使用部分绑定,因为它只指定一个程序集名称。
备注
绑定到程序集时,运行时不区分程序集名称的大小写,但会保留程序集名称中使用的大小写。 Windows SDK 中的几个工具会区分程序集名称的大小写。 为获得最佳效果,管理程序集名称时请按区分大小写的方式来处理。
详细的内容:https://docs.microsoft.com/zh-cn/dotnet/standard/assembly/file-format
命名应用程序组件
运行时在确定程序集的标识时不考虑文件名。 程序集标识(由程序集名称、版本、区域性和强名称组成)对运行时必须清楚明了。
例如,如果一个名为 myAssembly.exe 的程序集引用一个名为 myAssembly.dll 的程序集,则在执行 myAssembly.exe 时会正确进行绑定 。 但是,如果另一个应用程序使用 AppDomain.ExecuteAssembly 方法执行 myAssembly.exe,则当 myAssembly.exe 请求绑定到 myAssembly 时,运行时会确定 myAssembly 已经加载 。 在这种情况下,不会加载 myAssembly.dll。 由于 myAssembly.exe 不包含请求的类型,因此会发生 TypeLoadException。
为避免这个问题,请确保组成应用程序的程序集具有不同的程序集名称,或者将名称相同的程序集放在不同的目录中。
备注
在 .NET Framework 中,如果将强名称程序集置于全局程序集缓存中,则程序集的文件名必须与程序集名称相匹配,不包括文件扩展名,如 .exe 或 .dll 。 例如,如果程序集的文件名为 myAssembly.dll,则程序集名称必须为 myAssembly。 只有在根应用程序目录中部署的专用程序集的程序集名称可以不同于文件名。
注意
程序集名称不等于程序集的文件名。
.net 程序集分类:
引用程序集:是仅元数据程序集的扩展。这个程序集里面放的程序集的接口,没有具体的实现
实现程序集:就是我们通常编译生成的dll 或者 exe文件
【C#程序集】程序集的更多相关文章
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- .NET 程序集与命名空间
程序集 程序集(assembly)是一个或多个托管模块,以及一些资源文件的逻辑组合. 组成部分 Windows文件首部 CLR文件首部 程序集清单 类型元数据 MSIL(CIL)代码 嵌入资源集 作用 ...
- 程序集、应用程序配置及App.config和YourSoft.exe.config .
转自:http://www.cnblogs.com/luminji/archive/2010/10/21/1857339.html 什么是程序集 程序集标识属性 强名称的程序集 强名称工作原理 配置文 ...
- 黑马程序员-- .net基础加强8之委托,事件,程序集
---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 一.委托 ============ ...
- C# 命名空间和程序集
一.命名空间 1.通过使用using关键字引入命名空间,减少代码量 命名空间对相关的类型进行逻辑分组,通过命名空间能快速的定位到相关的类型,例如:在System.IO命名空间下,定义了所有I/O操作的 ...
- C#图解教程 第二十一章 命名空间和程序集
命名空间和程序集 引用其他程序集 mscorlib库 命名空间 命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间 using 指令 using命名空间指令using别名指令程序集的结构 程序集 ...
- .net程序集
单程序集 多个.dll或exe 文件 多程序集 单个.dll或exe 文件 单程序集 是一个单一 独立明确定义的包,这个包中包含有程序集清单,CIL和类型元数据 多程序集程序集基本由二进制文件组成(称 ...
- 《.NET之美》之程序集
一.什么是程序集(Assembly)? 经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为·dll或者是·exe的格式,但是要注意,它们跟普通意义上的WI ...
- 【C#】解析C#程序集的加载和反射
目录结构: contents structure [+] 程序集 程序集的加载 发现程序集中的类型 反射对类型成员的常规操作 发现类型的成员 创建类型的实例 绑定句柄减少进程的内存消耗 解析自定义特性 ...
- 二、源代码=>程序集及程序集概念介绍
文本脉络图如下: 一.源代码-面向CLR的编译器-托管模块-(元数据&IL代码)中介绍了编译器将源文件编译成托管模块(中间语言和元数据),本文主要介绍如何将托管模块合并成程序集. 1.程序集的 ...
随机推荐
- 什么是HTTP? HTTP 和 HTTPS 的区别?
转载地址: 面试官:什么是HTTP? HTTP 和 HTTPS 的区别? 一.HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范 ...
- python3 类的学习
# -*-coding:utf-8-*- # 定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来 ...
- vue 快速入门 系列 —— Vue 实例的初始化过程
其他章节请看: vue 快速入门 系列 Vue 实例的初始化过程 书接上文,每次调用 new Vue() 都会执行 Vue.prototype._init() 方法.倘若你看过 jQuery 的源码, ...
- Python之基本数据类型与数据结构
一.基础数据类型 标准数据类型: ·不可变数据类型 Number(数字):int.float.bool.complex(复数) String(字符串) Tuple(元祖):不可变,无法通过下标来修改值 ...
- 【以太坊剖析】以太坊虚拟机(EVM)之基本定义
以太坊虚拟机(EVM) 以太坊虚拟机(Ethereum Virtual Machine,简称EVM)是一个基于栈的虚拟机,基于特定的环境数据,执行一系列的字节代码形式的指令,以修改系统状态.EVM目前 ...
- 入门 - k8s滚动更新部署中的镜像版本 (七)
目标 使用 kubectl 执行 Rolling Update(滚动更新) 更新应用程序 用户期望应用程序始终可用,为此开发者/运维者在更新应用程序时要分多次完成.在 Kubernetes 中,这是通 ...
- Mac和Linux远程连接服务器异常修复(WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!)
感谢大佬:https://blog.csdn.net/wd2014610/article/details/79945424 一.今天在使用SSH,连接远程服务器的时候,刚开始是没问题的. 后来阿里云主 ...
- 广播接收者案例_ip拨号器
(1)定义一个类继承BroadCastReceiver public class OutGoingCallReceiver extends BroadcastReceiver { //当接收到外拨电话 ...
- 还在做廉价的劳动力?部署PXE实现Kickstart无人值守安装
搭建PXE实现Kickstart无人值守安装 1.搭建PXE远程安装服务器 2.实现kicstart无人值守安装 1.PXE介绍及搭载: PXE是有Intel公司开发的网络引导技术,工作在Client ...
- Pandas常用操作 - 新增数据列
初始化测试数据 df = pd.DataFrame({'stu_name': ['Nancy', 'Tony', 'Tim', 'Jack', 'Lucy'], 'stu_age': [17, 16, ...