C# 名称空间还是程序集?
我对名称空间和程序集感到非常困惑。是C# 名称空间还是程序集?,c#,.net,namespaces,assemblies,C#,.net,Namespaces,Assemblies,我对名称空间和程序集感到非常困惑。是System.Data和System.Web命名空间还是程序集 我注意到这些被称为名称空间,同时它们出现在GAC_32文件夹中。那么它们到底是什么呢?简言之: 大会: 程序集提供物理代码分组的基本单元。它是一个输出单元。 它是一个部署单元&一个版本控制单元。程序集包含MSIL代码 名称空间: 命名空间提供逻辑代码分组的基本单位。它是一组名称,其中每个名称都是唯一的。它们构成一组类的逻辑边界。命名空间必须在项目属性中指定。System.Data是一个命名空间,S
System.Data
和System.Web
命名空间还是程序集
我注意到这些被称为名称空间,同时它们出现在GAC_32
文件夹中。那么它们到底是什么呢?简言之:
大会:
程序集提供物理代码分组的基本单元。它是一个输出单元。
它是一个部署单元&一个版本控制单元。程序集包含MSIL代码
名称空间:
命名空间提供逻辑代码分组的基本单位。它是一组名称,其中每个名称都是唯一的。它们构成一组类的逻辑边界。命名空间必须在项目属性中指定。
System.Data
是一个命名空间,System.Data.DLL
(文件)是一个程序集
命名空间是类型的逻辑分组(主要是为了避免名称冲突)。一个程序集可以包含多个名称空间中的类型(
System.DLL
包含一些…),单个名称空间可以跨程序集分布(例如System.Threading
)。它们是名称空间。程序集包含多个名称空间。例如:System.DLL
包含这些名称空间(以及更多):
还有一个名称空间可能包含嵌套的名称空间。它们只是组织代码的逻辑名称。请注意,DLL
文件是包含名称空间的程序集
GAC
是全局程序集缓存。据
全局程序集缓存存储专门指定由计算机上的多个应用程序共享的程序集
因此,存储在
GAC
中的常用程序集,因此您不需要将所有程序集文件复制到您从项目中引用的项目目录中。存储在GAC
中的程序集是程序集。通常,当您从项目中添加对程序集的引用时Strong命名
将在bin\Debug
文件夹中创建.dll
文件的副本。如果您希望制作程序集(例如类库项目)Strong-Named.See:您在GAC中看到的文件是System.Data.dll
,它是一个程序集,包含名称空间,包括System.Data
。如果在Visual studio中查看引用属性,则会看到:
稍后,如果在参照上单击鼠标右键并选择“在对象浏览器中查看”,则将在该特定部件中看到名称空间
简而言之:
- 程序集存储为.EXE或.DLL文件
- 命名空间是对类型名称进行分组并减少名称冲突的一种方法
System.Web
和System.Data
是名称空间
MSDN将其描述为:
名称空间在C#编程中有两种使用方式。首先,.NET Framework使用名称空间来组织它的许多类;其次,声明自己的名称空间可以帮助控制大型编程项目中类和方法名称的范围
是可由.NET运行时环境执行的(预编译)代码块。它包含一个或多个名称空间。NET程序由一个或多个程序集组成
System.Web.dll
和System.Data.dll
是程序集
MSDN将其描述为:
程序集是.NET Framework应用程序的构建块;它们构成了部署、版本控制、重用、激活范围和安全权限的基本单元。程序集是为协同工作而构建的类型和资源的集合,并形成一个逻辑功能单元。程序集向公共语言运行库提供它需要知道的类型实现信息。对于运行时,类型不存在于程序集上下文之外
正如@amdluigi所说,“通常,