.NET程序集是什么?我在网上搜索过,但无法理解定义。
汇编是 .net 应用程序最小部署单元的形式,可以是dll或exe.
总体上,它主要有两种类型:
私有汇编: 是仅属于一个应用程序的 dll 或 exe。通常存储在应用程序根文件夹中。
公共 / 共享汇编: 是可供多个应用程序同时使用的 dll。共享汇编存储在全局程序集缓存(GAC)中。
听起来困难么?不会的....
GAC 是简单的C:\Windows\Assembly文件夹,在其中可以找到您计算机上安装的所有软件的公共汇编/ dll。
还有第三种少为人知的汇编类型: 卫星汇编(Satellite Assembly)。
卫星汇编仅包含诸如图像和应用程序所需的其他非可执行文件等静态对象。
简单来说:一块可以由.NET运行时环境执行的(预编译)代码。一个.NET程序由一个或多个程序集组成。
.class
文件? - mljrg除了已接受的答案外,我想给你一个例子!
例如,我们都使用
System.Console.WriteLine()
但System.Console.WriteLine的代码在哪里呢!?实际上是哪段代码将文本输出到控制台?
如果您查看Console类文档的第一页,您会在顶部附近看到以下内容:程序集:mscorlib(位于 mscorlib.dll 中)。 这表明Console类的代码位于名为mscorlib的程序集中。程序集可以由多个文件组成,但在此情况下只有一个文件,即动态链接库mscorlib.dll。
mscorlib.dll文件在.NET中非常重要。它是.NET类库的主要DLL,并包含所有基本的.NET类和结构。
如果你了解C或C ++,通常需要在顶部使用 #include 指令引用头文件。该 include 文件向编译器提供函数原型。相反,C#编译器不需要头文件。在编译期间,C#编译器直接访问mscorlib.dll文件,并从该文件中的元数据获取有关其中定义的所有类和其他类型的信息。
C#编译器可以确定mscorlib.dll确实包含一个名为System的命名空间中的Console类,以及一个名为WriteLine的方法,该方法接受一个字符串类型的单个参数。
C#编译器可以确定WriteLine调用是有效的,并在可执行文件中建立对mscorlib程序集的引用。
默认情况下,C#编译器将访问mscorlib.dll,但对于其他DLL,您需要告诉编译器类所在的程序集。这些被称为引用(reference)。
希望现在清楚了!
来自DotNetBookZero Charles pitzold
IL代码中包含了类、接口、枚举等的物理集合。这些集合可以是.EXE或.DLL文件。.EXE是可执行文件,而.DLL可以在任何.NET支持的语言中动态使用。
MSDN有一个很好的解释:
程序集是.NET Framework应用程序的构建块; 它们形成部署、版本控制、重用、激活作用域和安全权限的基本单位。程序集是一组类型和资源,它们被构建为协同工作并形成一个逻辑功能单元。程序集向公共语言运行时提供所需的信息,以便了解类型实现。对于运行时来说,在程序集的上下文之外,类型是不存在的。
- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header