程序集
.NET程序的库和可执行文件称为程序集(Assembly)。
库和可执行文件使用相同的程序集结构,唯一的区别是可执行文件包含一个主程序入口点(CRE:即Main方法)。而库不包含。
程序集是完全自描述性的,它是一个逻辑单元而不是物理单元,这意味它可以存储在多个文件中(动态程序集在内存中)。如果一个程序集存储在多个文件中,其中就会有一个包含入口点的主文件。
程序集的一个重要特征是它们包含的元数据描述了对应代码中定义的类型和方法,程序集还包含描述程序集自身的程序集元数据。这种程序集元数据包含在一个称为清单(manifest)的区域中,用于验证程序集版本和完整性。
私有程序集
私有程序集一般附带在某个软件上,且只能用于该软件。
因为私有程序集是完全自包含的,所以部署它的过程就很简单。只需要把相应的文件放在对应文件夹下即可,不需要注册表项。
共享程序集
共享程序集是其他应用程序可以使用的公共库。因为其他软件可以访问共享程序集,所以需要采取一定的保护措施来防止名称冲突和版本覆盖问题。
NuGet包
NuGet包是一个zip文件,其中包含程序集、配置信息、PowerShell脚本。
使用库可能不仅意味着添加一个引用并使用它。使用库也意味着一些配置更改,或者可以通过脚本来利用的一些特性。这是在NuGet包打包程序集的一个原因。另一个原因是,NuGet包可以很容易地从微软的NuGet服务器获得或者直接在VisualStudio中添加到应用程序。
(END)