【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文件
最新文章
- python装饰器通俗易懂的解释!
- SQL语句汇总(一)——数据库与表的操作以及创建约束
- Lotus开发性能优化
- nyoj 139 我排第几个--康拓展开
- 通过Ajax——异步获取相关问题解答
- pod setup》error: RPC failed; result=18, HTTP code = 200
- 组合逻辑的Glitch与时序逻辑的亚稳态
- 【NOIP模拟赛】正方形大阵
- BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解
- Mysql 实例分析连接
- datagridview bindingsource
- ASP.NET Core的身份认证框架IdentityServer4--(2)API跟WEB端配置
- 译MassTransit 创建消息消费者
- HttpClient Received an unexpected EOF or 0 bytes from the transport stream
- 【转】/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍
- google浏览器mac上跨域问题解决
- flume在windows环境下的使用
- ApplicationContext中getBean详解
- Docker背景介绍
- Canvas:技术小结
热门文章
- nodejs express异常捕获
- golang中的map
- Mac系统之U盘重装(降级)
- IntelliJ IDEA 热部署,修改java文件 不用重启tomcat
- Linux配置 ftp 和 ftp简单介绍
- 有向图子图 DAG 数量
- Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources failed.
- 如何使用C++开发PHP扩展(下)
- Lua 语言: 语法
- 关于MPMoviePlayerController 缓存播放的一些技术准备