请您解释一下在C#或.NET中,什么是Assembly?
- 它从哪里开始,又从哪里结束?
- 我需要了解哪些关于Assemblies的重要信息?
请您解释一下在C#或.NET中,什么是Assembly?
一个程序集是您的代码的编译输出,通常是一个DLL文件,但您的EXE也是一个程序集。它是任何.NET项目的最小部署单元。
程序集通常包含.NET代码的MSIL(Microsoft中间语言),第一次在给定的计算机上执行时将被编译为本地代码(“JITted” -由即时编译器编译)。编译后的代码也将存储在程序集中,并在随后的调用中重复使用。
程序集还可以包含资源,如图标、位图、字符串表等等。此外,程序集还包含程序集清单中的元数据 - 例如版本号、强名称、文化、引用的程序集等等。
在99%的情况下,一个程序集等于磁盘上的一个物理文件 - 多文件程序集(一个程序集分布在多个文件中)的情况似乎是一个相当奇怪的特例,在我五年多的.NET开发中从未遇到过。
在多文件程序集中,仍然会有一个程序集清单在DLL或EXE中,并且MSIL代码在多个netmodule文件中。
bin
文件夹(和其他文件夹)将出现。打开“debug”文件夹,右键单击所需程序集,然后单击“复制路径”。 - carloswm85http://www.codeguru.com/columns/csharp_learning/article.php/c5845
一个程序集是在每次成功编译 .NET 应用程序时由编译器自动生成的文件。它可以是动态链接库或可执行文件。它仅为应用程序生成一次,在每次后续编译时程序集将被更新。
这里有另一个关于.NET程序集构成的解释,摘录如下:
.NET框架由模块和程序集概念组成,它们都存储元数据和清单信息。一个程序集可以包含多个模块。Visual C#只创建一个模块,由C#编译器(csc.exe)将其转换为程序集,但是一个程序集可以通过程序集链接器(al.exe)命令行工具链接多个.NET模块。例如,您的每个源代码.cs文件都可以编译为一个模块,并链接在一起形成一个程序集 - 一个程序集只是模块和资源的集合。然而,其中一个模块必须包含清单元数据(见下文),CLR才能理解程序集。汇编是一个DLL或EXE,当您发布或编译应用程序时将创建它。
程序集是逻辑单元的集合。逻辑单元指构建应用程序并使用 .Net 框架部署它们所需的类型和资源。基本上,程序集是 Exe 和 DLL 的集合。它是可移植且可执行的。