明天回顾一些.NET的内容,
MSDN定义Internal
关键字如下:
内部类型或成员只能在同一程序集中的文件中访问
但我似乎无法找到的是装配的定义。是一切都在同一名称空间,同一个项目中,还是......?
答案 0 :(得分:4)
在程序集内部,您可能已经定义了多个名称空间。程序集是.NET中最小的部署单元。它是您的IL代码和有关代码的元数据的集合。它包含一个名为Manifest的文件,其中声明了程序集中使用的所有类型或引用的所有类型。还有一些其他文件。
正如MSDN中更正式地说明的那样:
程序集是.NET Framework应用程序的构建块; 它们构成了部署,版本控制,重用, 激活范围和安全权限。装配是一个 为了协同工作而构建的类型和资源的集合 形成一个逻辑的功能单元。装配提供了共同点 语言运行时,它需要知道类型的信息 实现。对于运行时,外部不存在类型 集会的背景。
另一方面,namespace
我们有
namespace关键字用于声明包含集合的范围 相关的对象。您可以使用命名空间来组织代码元素 并创建全球唯一类型。
在MSDN
中说明从上面可以清楚地看到,您可以在程序集中声明所需的名称空间。
一个很好的免费工具,可以用来查看装配中的内容IL Disassembler。
答案 1 :(得分:1)
程序集是一个已编译为.DLL或.EXE的项目。出于Visual Studio的目的,任何类库项目,Windows窗体应用程序或WPF应用程序都将编译为程序集。
答案 2 :(得分:1)
程序集是物理容器文件(DLL或EXE)。
虽然有点不寻常,但命名空间可以跨越多个程序集。
答案 3 :(得分:1)
由于命名空间可以跨越多个程序集,因此内部类不一定对同一命名空间中的所有类都是可见的。程序集是编译文件(DLL或EXE)。
通常它意味着在同一个项目中,但有一些方法可以将多个项目的输出组合成一个程序集(通过ILMERGE)。
答案 4 :(得分:1)
程序集和命名空间是正交的。一个程序集可能包含多个名称空间,单个名称空间可能跨多个程序集。程序集是.NET框架中最小的可独立版本化的代码单元。程序集定义代码的物理组织(到dll或exe文件),而名称空间定义逻辑组织。单个程序集是单个dll或exe文件。命名空间是通常基于技术或功能的逻辑分组。 System.Net
处理网络问题。 System.Text
处理文本操作和编码。
请注意,我根本没有提到过项目。项目只与特定的构建系统真正相关。 .NET运行时本身并不了解项目。由于大多数人使用Visual Studio和MSBuild工具进行开发,并且默认是将单个项目输出为单个程序集,因此人们倾向于在临时对话中交替使用术语项目和程序集。像MonoDevelop这样的其他工具遵循类似的模式,但没有规则规定单个项目必须生成单个程序集。
答案 5 :(得分:0)
在.NET世界中,Assembly是一个编译代码包。它可以是可执行文件(.exe
)或共享库(.dll
文件),也可以包含多个名称空间。