名称空间是程序集还是项目

本文关键字:项目 程序集 空间 | 更新日期: 2023-09-27 18:17:49

为明天的面试复习一些。net的东西,

MSDN对Internal关键字的定义如下:

内部类型或成员只能在同一程序集中的文件中访问

但是我似乎找不到汇编的定义。是同一名称空间内的所有内容,相同的项目,还是…?

名称空间是程序集还是项目

程序集和名称空间是正交的。一个程序集可以包含多个名称空间,一个名称空间可以跨越多个程序集。程序集是。net框架中最小的独立版本代码单元。程序集定义代码的物理组织(在dll或exe文件中),而名称空间定义逻辑组织。单个程序集是单个dll或exe文件。名称空间通常是基于技术或功能的逻辑分组。System.Net处理网络。System.Text处理文本操作和编码。

请注意,我根本没有提到项目。项目是只与特定构建系统真正相关的东西。. net运行时本身并不了解项目。由于大多数人使用Visual Studio和MSBuild工具进行开发,并且默认是让单个项目输出单个程序集,因此人们倾向于在日常交谈中交替使用项目和程序集这两个术语。其他工具如MonoDevelop遵循类似的模式,但是没有规则规定单个项目必须生成单个程序集。

程序集是已编译为. dll或. exe的项目。为了Visual Studio的目的,任何类库项目、Windows窗体应用程序或WPF应用程序都可以编译成程序集。

不可以在程序集中定义多个名称空间。程序集是。net中最小的部署单元。它是您的IL代码和有关代码的元数据的集合。它包含一个名为Manifest的文件,在该文件中声明了程序集中使用或引用的所有类型。还有一些其他文件。

在MSDN中有更正式的表述:

程序集是。net框架应用程序的构建块;它们构成了部署、版本控制、重用、激活范围和安全权限。程序集是类型和资源的集合,这些类型和资源是为了协同工作而构建的形成功能的逻辑单元。程序集提供公共的语言运行时,它需要知道类型的信息实现。类之外不存在类型程序集的上下文。

另一方面,对于namespace,我们有

namespace关键字用于声明一个包含set的作用域相关对象的。您可以使用名称空间来组织代码元素并创建全局唯一的类型。

如MSDN

所述

从上面可以清楚地看出,您可以在程序集中声明任意数量的名称空间。

一个很好的和免费的工具,你可以使用它来查看程序集中是什么。

程序集是一个物理容器文件(DLL或EXE)。

尽管有些不寻常,但名称空间可以跨越多个程序集。

内部类不一定对同一命名空间内的所有类可见,因为命名空间可以跨多个程序集。程序集是编译后的文件(DLL或EXE)。

通常表示在同一项目中,但也有方法将多个项目的输出组合成一个程序集(通过ILMERGE)。

在。net世界中,汇编是编译后的代码包。它可以是可执行文件(.exe文件)或共享库(.dll文件),并且可以包含多个名称空间。