C#与.NET程序员面试宝典 2.2.7 面试题14:解决方案下的一个项目是否就代表一个程序集

程序集是.NET框架中比较基本的概念,.NET程序员在调试代码的时候经常会遇到程序集引用及依赖问题方面的报错,要解决这些错误问题,首先需要了解程序集的概念和特性,并且需要清晰地了解程序集和项目之间的关系。

 

【出现频率】★★★★

 

【关键考点】

程序集(Assemble)

程序集特性

项目

 

【考题分析】

程序集(Assemble)是指包含编译好的、面向.NET Framework的代码的逻辑单元,是完全自我描述性的一个逻辑单元(而不是物理单元)。程序集可以存储在多个文件中,但动态程序集不是存储在文件中,而是存储在内存中。如果某一个程序集存储在多个文件中,则会有一个主文件包含入口点,该主文件描述了程序集中的其他文件。可执行的程序集代码和库程序均使用相同的程序集结构,惟一的区别是可执行的程序集包含一个主程序入口点,而库程序集则不包含。简而言之,程序集就是几个彼此有关联程序文件的集合。

 

程序集包含程序的元数据,程序集的一个重要特性是它们包含的元数据描述了对应代码中定义的方法和类型。程序集也包含描述程序集本身的元数据,这种程序集元数据包含在程序集清单区域中,可以检查程序集的完整性及其版本。程序集的元数据表示调用给定程序集中的代码中应用程序或其他程序集不需要指定注册表或其他数据源,以便确定如何使用该程序集。程序集包含两种类型:共享程序集和私有程序集。

 

注意:一个项目可以编译到一个程序集,也可以把多个项目编译到一个程序集里面,还可以把一个项目编译到多个程序集里。一个DLL文件就是一个程序集,因此一个项目可以生成多个DLL文件,而同一个项目下也可以有多个不同的命名空间。

 

【答案】

项目和程序集是两个概念,项目不代表程序集。程序集(Assemble)是一个由类型定义、数据文件和资源文件组成的逻辑集合。每个程序集都包含一个程序集清单,该清单通常被附加在某个文件头上,也可以设置单独建立一个文件来包含该清单。应用程序域(AppDomain)是CLR中提供代码运行范围、错误隔离和安全隔离的逻辑单元,功能类似于操作系统的进程。而一个项目可以编译到一个程序集,也可以把多个项目编译到一个程序集里面,还可以把一个项目编译到多个程序集里。

posted @ 2010-10-20 10:18  面试宝典  阅读(807)  评论(0编辑  收藏  举报