什么是.NET程序集?我在网上浏览了一下,我不明白这个定义。


当前回答

维基百科说:

In the Microsoft .NET framework, an assembly is a partially compiled code library for use in deployment, versioning and security. There are two types: process assemblies (EXE) and library assemblies (DLL). A process assembly represents a process which will use classes defined in library assemblies. .NET assemblies contain code in CIL, which is usually generated from a CLI language, and then compiled into machine language at runtime by the CLR just-in-time compiler. An assembly can consist of one or more files. Code files are called modules. An assembly can contain more than one code module and since it is possible to use different languages to create code modules it is technically possible to use several different languages to create an assembly. Visual Studio however does not support using different languages in one assembly.

如果你真的浏览过,澄清你不理解的地方会有帮助

其他回答

程序集是.net应用程序的最小部署单元。 它可以是一个dll或exe。 主要有两种类型:

私人组装: dll或exe只是一个应用程序的唯一属性。它通常存储在应用程序根文件夹中 公共/共享组装: 它是一个可以同时被多个应用程序使用的dll。共享程序集存储在GAC中,即全局程序集缓存。

听起来困难吗?Naa…… GAC就是C:\Windows\Assembly文件夹,在这里您可以找到安装在PC上的所有软件的公共程序集/dll。

还有第三种也是最不为人知的装配类型:卫星装配。 附属程序集只包含静态对象,如图像和应用程序所需的其他非可执行文件。

MSDN给出了一个很好的解释:

Assemblies are the building blocks of .NET Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions. An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. An assembly provides the common language runtime with the information it needs to be aware of type implementations. To the runtime, a type does not exist outside the context of an assembly.

除了公认的答案,我还想给大家举个例子!

例如,我们都在使用

System.Console.WriteLine()

但是System.Console.WriteLine的代码在哪里? 哪个代码是实际将文本放到控制台上的?

如果你看一下Console类文档的第一页,你会在顶部附近看到以下内容: 这表明控制台类的代码位于名为mscorlib的程序集中。程序集可以包含多个文件,但在本例中,它只有一个文件,即动态链接库mscorlib.dll。

mscorlib.dll文件在。net中非常重要,它是。net中类库的主要DLL,它包含了所有基本的。net类和结构。

如果你懂C或c++,通常你需要一个#include指令在顶部引用一个头文件。包含文件为编译器提供函数原型。相反,c#编译器不需要头文件。在编译过程中,c#编译器直接访问mscorlib.dll文件,并从该文件中的元数据中获取有关其中定义的所有类和其他类型的信息。

c#编译器能够确定mscorlib.dll确实在名为System的命名空间中包含一个名为Console的类,该类具有一个名为WriteLine的方法,该方法接受一个字符串类型的参数。

c#编译器可以确定WriteLine调用是有效的,并且编译器在可执行文件中建立对mscorlib程序集的引用。

默认情况下,c#编译器将访问mscorlib.dll,但对于其他dll,你需要告诉编译器类所在的程序集。这些被称为引用。

我希望现在明白了!

Charles pitzold

在Microsoft.Net中,程序集是代码版本安全、部署和可重用性的最小单元。

它包含:

- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header

看到这个:

在Microsoft .NET框架中,程序集是用于部署、版本控制和安全的部分编译代码库