文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>关于.net程序集的问题

关于.net程序集的问题

时间:2010-12-08  来源:萨武大海

--------------------

作为一个单元进行版本控制和部署的一个或多个文件的集合。程序集是 .NET Framework 应用程序的主要构造块。所有托管类型和资源都包含在某个程序集内,并被标记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。程序集在安全方面也起着重要作用。代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。

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

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

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

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

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

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

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

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

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

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

----------------

 

上面这段是复制的关于程序集的一个官方描述,任何人看了以后都会发生如下疑问,

一、程序集是不是就只能是一个dll或者exe文件。(强调一个而不是二个或三个)

二、程序集是不是只能是dll或者exe文件?jpg文件或者xml文件算不算程序集?(这些jpg文件或xml文件是exe引用的资源啊,资源文件不一定是要封装在dll中的)

三、程序集形成类型边界,那么命名空间不也是形成类型边界吗?那么程序集的名子是放在命名空间前面呢,还是后面?还是根本不需要放命名空间?程序集和命名空间的关系到底是什么?

四、应用程序域在我理解来看,就是一个进程中加载不同的程序集,并且互相不干扰,相当于几个不同的应用程序运行在同一个进程中,那么是否程序集就是应用程序域中的运行单元,也就是一个应用程序域对应一个程序集?

五、有些人说一个dll文件或exe文件中可能不止一个程序集,不知道对不对。
六、一个程序集中可能有不止一个namespace,不知道对不对。

这六个问题只是一个开始,我们需要的是完全肯定的回复,而不是那种莫能两可的描述,编程是一项非常逻辑和标准化的工作,不能有任何歧义,必须要准确回答。1就是1,2就是2,不能说的让人不能肯定是1或是2.

 


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载