C# 中的程序集类型

2024 年 8 月 29 日 | 阅读 3 分钟

引言

程序集是 C# 中的一个重要概念。它是一组代码文件,被编译成一个可执行文件或一个动态链接库 (DLL)。根据其位置和预期用途,程序集可以分为多种类别。本文将探讨 C# 中各种程序集的类型。

私有程序集

仅供单个应用程序使用的程序集称为私有程序集。它通常位于应用程序的目录或该程序目录的子目录中。私有程序集不打算与其他应用程序共享。它们用于存储特定于应用程序的代码和资源。

在编译应用程序时创建私有程序集。编译应用程序时,应用程序使用的所有代码文件和资源都会被编译成一个单一的程序集。此程序集随后将位于应用程序的目录或应用程序目录的子目录中。

私有程序集易于部署和使用。它们不需要任何额外的安装或设置。当应用程序启动时,.NET 运行时会自动加载它们。

共享程序集

供多个程序使用的程序集称为共享程序集。它通常位于全局程序集缓存 (GAC) 或公共目录中。多个应用程序可以共享共享程序集。它们用于存储供不同应用程序共享的资源和代码。

共享程序集使用强名称工具(sn.exe) 创建。使用强名称工具为程序集应用数字签名。数字签名确保程序集的真实性和未被篡改。

全局程序集缓存 (GAC) 存储共享程序集。共享程序集存储在GAC 中,它充当中央存储库。GAC 的位置位于 Windows 目录(C:\Windows\assembly) 中。使用 gacutil.exe 工具将共享程序集注册到GAC

共享程序集需要特殊的配置和安装。它们不能简单地复制到应用程序的目录。需要使用gacutil.exe 工具将其注册到GAC

辅助程序集

用于存储区域性资源的程序集称为辅助程序集。它通常位于应用程序目录的子目录或共享程序集目录的子目录中。本地化资源,如字符串、图像和音频文件,都存储在辅助程序集中。

辅助程序集使用resgen.exe 工具创建。resgen.exe 工具用于从文本文件创建资源文件(.resx)。然后使用al.exe 工具将资源文件编译成辅助程序集。

辅助程序集的命名遵循特定的命名约定。辅助程序集的命名约定如下:

名称的<AssemblyName> 部分是辅助程序集所关联的主程序集的名称。.NET 运行时会在应用程序首次启动时自动加载辅助程序集。.NET 运行时会根据用户的区域设置自动选择合适的辅助程序集。

动态链接库 (DLL)

动态链接库 (DLL) 是一种程序集,其中包含可供多个应用程序使用的代码。与共享程序集类似,DLL 的创建目的是供多个应用程序使用。但是,DLL 与共享程序集不同之处在于它们没有唯一的名称。

DLL 存储在应用程序的目录或应用程序目录的子目录中。通过简单地将 DLL 复制到应用程序的目录,就可以被多个应用程序使用。

DLL 使用与创建共享程序集相同的工具创建。但是,DLL 不需要强名称。它们可以进行数字签名,但这只是可选的。

结论

程序集是 .NET 框架的重要组成部分,用于存储可供一个或多个应用程序使用的代码文件和资源。C# 中主要有四种类型的程序集:私有程序集共享程序集辅助程序集动态链接库 (DLL)。每种类型的程序集都有其自身的目的和用途。

私有程序集用于存储仅单个应用程序所需的特定于应用程序的代码和资源。它们不需要任何额外的安装或配置,并且易于部署。当应用程序启动时,.NET 运行时会自动加载它们。


下一个主题Unity Container C#