C#中程序集指的是什么?

C#中程序集指的是什么?,第1张

public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制

程序集是 .NET Framework 编程的基本组成部分。程序集执行以下功能:

包含公共语言运行库执行的代码。如果可移念悄核植可执行 (PE) 文件没有相关联的程序集清单,则将不执行该文件中的 Microsoft 中间语言 (MSIL) 代码。请注意,每个程序集只能有一个入口点(即 DllMain、WinMain 或 Main)。

程序集形成安全边界。程序集就是在其中请求和授予权限的单元。有关应用于程序集的安全边界的更多信息,请参见程序集安全注意事项。

程序集形成类型边界。每一类型的标识均包括该类型所驻留的程序集的名称。在一个程序集范围内加载的 MyType 类型不同于在其他程序集范围内加载的 MyType 类型。

程序集形成引用范围边界。程序集的清单包含用于解析类型和满足资源请求的程序集元数据。它指定在该程序集之外公开的类型和资源。该清单还枚举它所依赖的其他程序集。

程序集形成版本边界。程序集是公共语言运行库中最小的可版本化单元,同一程序集中的所有类型和资源均会被版本化为一个单元。程序集的清单描述您为任何依赖项程序集所指定的版本依赖性。有关版本控制的更多信息,请参见程序集版本控制。

程序集形成部署单元。当一个应用程序启动时,只有该应用程序最初调用的程序集必须存在。其他程序集(例如本地化资源和包含实用工具类的程序集)可以按需检索。这就使应用程序在第一次下载时保持精简。有关部署程序集的更多信息,请参见部署应用程序。

程序集是支持并行执行的单元。有关运行多个程序集版本的更多信息,请参见程序集和并行 (side-by-side) 执行。

程序集可以是静态的或动态的。静态程序集可以包括 .NET Framework 类型(接口和类),以及该程序集的资源(位图、JPEG 文件、资源文件等)。静态程序集存储在磁盘上的可移植可执行 (PE) 文件中。您还可以使用 .NET Framework 来创建动态程运和序集,动态程序集直接从内存运行并且在执行前不存储到磁盘上。您可以在执行动态程序集后将它们保存在磁盘上。

有几种创建程序集的方法。您仔掘可以使用过去用来创建 .dll 或 .exe 文件的开发工具,例如 Visual Studio 2005。您可以使用在 .NET Framework SDK 中提供的工具来创建带有在其他开发环境中创建的模块的程序集。您还可以使用公共语言运行库 API(例如 Reflection.Emit)来创建动态程序集。

很有兴趣的话,可以去阅读下Jeffrey Ritchie的《Clr via C#》,目前出到第三版,英文好的话强烈推荐看英文版的,而且我有该电子书和实体书。

下面讲下我的理解:大致上不会出什么差错的,细节部分你可以参照上面的书籍!

1. 首先,c#源码经过c#编译器被编译成托管模块(IL中间代码、元数据(Metadata))

2. 然后,使用C#编译器以及程序集段激链接器(Assembly Linker ---- AL.exe)将上述托管模块以及项目的资源文件Combine(整合)成一个程序集(Assembly)

上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是该程序集内容以及关系的一个清单,具体的内容你可以参见JR的书跟Java中的类似!

双击该exe运行的时候:

3. 最后,运行时,CLR装载对应的程序集,使用内部的三个即时编译器(常用的为JIT),再去根据本机的环境去拆散进行相应的优化(针对CPU优化等等),即时的翻译成本地机器指令去执行。

还有一个本地化代码生成工旅燃氏具,NGen.exe~~

这个最好能去看看那本JR的神作!细节不是我三言两语能讲清的~~

c语言添加程序集后电脑需要加集和控件。橡歼根据查询相关资料信息,c语言添加程序集需要应用相应的集和控件运行肆如梁程序集,因此电脑需要加集和控件裂运,辅助c语言添加程序运行。c语言添加程序集包括应用程序结构,程序集对象和成员。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12399871.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存