类库和程序集

2538 更新于: 2023-01-17 读完约需 9 分钟

概述

在C#语言中,开发者通常按一定规则将一类具有相似功能的代码封装在同一个.dll(动态链接库)文件中,以便管理、维护及重用,这个文件项目我们称之为C#的类库,类库定义了应用程序调用的类型和方法。

在.NET平台中,可以根据不同的目标框创建不同的类库。

如果类库的目标框架是.NET Standard 2.0,那么它可以被任何支持.NET Standard 2.0的项目(包括.NET Framework)调用。如果类库的目标框架是.NET 5,那么任何以.NET 5为目标框架的应用程序都可以调用它。本教程将展示基于.NET 5为目标框架创建C#类库的全过程。

创建好的类库可以作为NuGet包进行分发,或者作为应用程序的组件进行分发。

程序集构成了.NET应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。程序集是为协同工作而生成的类型和资源的集合,这些类型和资源构成了一个逻辑功能单元。程序集采用可执行文件(.exe)或动态链接库文件 (.dll) 的形式,是 .NET 应用程序的构建基块 。 它们向公共语言运行时提供了注意类型实现代码所需的信息。

C#类库生成的.dll文件是程序集的一种。

准备工作

由于本教程基于.NET 5演示,所以需要准备.NET 5的SDK,你可以安装Visual Studio 2019 16.8及以上版本,它将自动安装.NET 5的SDK。

创建解决方案

首先,创建一个空白的解决方案来放置类库项目。Visual Studio解决方案可作为一个或多个项目的容器。也就是说,你可以向同一个解决方案添加一个或多个其他相关项目。

创建空白解决方案步骤如下:

1.打开Visual Studio 2019

2.在启动窗口中,选择创建新项目

3.在创建新项目窗口中,从右侧模板列表中选择空白解决方案模板,然后点击下一步按钮,如下:

4.在配置新项目窗口中,分别填写解决方案名称位置信息,点击创建按钮,Visual Studio将自动创建一个空白的解决方案,如图:

创建类库项目

接下来,将以创建一个Payment(专门做支付)的类库为例,一步一步演示C#类库从创建到引用再到调用类库中的方法的完整示例。
1.创建Payment类库。

  1. 右键单击刚才创建的解决方案ClassLibraryDemo,依次选择添加 -> 新建项目,如图:

  2. 在弹出的添加新项目窗口中,选择类库模板(注意:不是类库(.NET Framework)),之后单击下一步,如图:

  3. 在弹出的配置新项目窗口中,填写项目名称位置等信息,再单击下一步,如图:

  4. 在其他信息窗口中,选择目标框架为.NET 5.0(当前),最后点击创建按钮,如图:

2.检查创建好的Payment项目属性,右键单击项目Payment,选择属性菜单,如图:

属性面板中,确保:默认命名空间是Payment,目标框架是.NET 5.0,输出类型是类库,如图:

3.删除Payment项目中自动创建的类Class1.cs文件,另外新增一个名为WeChatPay.cs,并编写模拟微信支付的代码,如下:

以上的WeChatPay.cs类文件中,声明了命名空间namespace Payment,创建了一个Pay()方法,接收支付账户和金额两个参数,分别为accountamount,方法内部是模拟的支付逻辑,方法的返回值是布尔类型。

4.以上3步即完成了类库的创建及类功能的编写,现在需要对这个项目进行编译以生成.dll动态链接库文件。

点击菜单栏中的生成 -> 生成解决方案或者按快捷键Ctrl+Shift+B 来生成解决方案中的全部项目,如图:

生成结果如图:

在文件资源管理器中打开Payment项目的bin目录,可以看到成功生成的Payment.dll动态链接库文件,如图:

创建控制台应用程序

1.在Visual Studio的解决方案资源管理器面板中右键单击上文创建的解决方案ClassLibraryDemo,依次选择菜单项:添加 -> 新建项目,如图:

2.在弹出的添加新项目窗口中,选择控制台应用程序模板,之后单击下一步,如图:

3.在弹出的配置新项目窗口中,填写项目名称位置等信息,再单击下一步,示例中的项目名称为ConsoleApp1,如图:

4.在其他信息窗口中,选择目标框架为.NET 5.0(当前),最后点击创建按钮,如图:

5.Visual Studio创建好的解决方案及项目结构如下图:

引用程序集的方式简介

现在,来尝试使用上文创建的Payment项目中的WeChatPay的支付功能。

要使用其他项目或程序集,首先需要在当前项目添加对其他项目(或程序集)的引用,引用方式也有多种:

  • 同一解决方案通过引用项目的方式
  • 以浏览程序集方式路径的方式
  • NuGet程序包管理工具安装

这里主要介绍前两种,即通过引用项目和浏览程序集路径的方式。

添加项目引用

右键单击ConsoleApp1项目中的依赖项 -> 添加项目引用,如图:

在弹出的引用管理器窗口中,选中左侧的项目 -> 解决方案,右侧的列表将列出当前解决方案中所有可用的类库项目,这里只有Payment项目,勾选此项目,然后单击确定按钮,如图:

成功添加Payment项目引用后,ConsoleApp1项目的依赖项中会出现对其的引用,如图:

现在,可以在ConsoleApp1项目中调用Payment程序集的可访问的类及方法了。

Program.cs文件中,使用using指令导入Payment命名空间,如下:

using Payment;

然后实例化WeChatPay的实例对象,并调用实例的Pay()方法,如下:

using System;
using Payment;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            WeChatPay weChatPay = new WeChatPay();
            weChatPay.Pay("Rector", 100.00M);
            Console.ReadKey();
        }
    }
}

在启动前打开ConsoleApp1项目的属性面板,确保输出类型为:控制台应用程序,启动对象为:ConsoleApp1.Program,如图:

再次右键单击ConsoleApp1项目,点击设为启动项目选项,如图:

最后,点击工具栏中的运行(绿色三角形)按钮(或者按快捷键F5),如图:

运行结果如图:

至此,同一解决方案的项目引用示例就成功完成了。

浏览程序集路径引用

那有人会有疑问了:“如果我的程序集不在同一解决方案,是否可以引用,又该如何引入呢?”。

下面,将介绍通过浏览程序集路径的方式来引用第三方的程序集.dll文件。

首先,我们将Payment项目从ClassLibraryDemo解决方案中移除,右键单击项目Payment -> 移除,如图:

移除后,ConsoleApp1项目的Program.cs代码马上报错了,如图:

是因为:没有了对Payment的引用,编译器找不出对应的程序集了。

接下来,右键单击ConsoleApp1项目中的依赖项 -> 添加项目引用

在弹出的引用管理器窗口中,选中左侧的浏览,再点击右下角的浏览按钮,如图:

在弹出的文件选择对话框中,找到上文中生成的Payment.dll程序集文件,如图:

选中后,点击添加。Visual Studio将会把选中的程序集添加到引用管理器窗口的程序集列表,勾选需要引用的程序集,然后单击确定按钮,如图:

回到Visual Studio解决方案资源管理器面板,展开ConsoleApp1的依赖项,可以看到多了程序集这个选项和对Payment程序集的引用,如图:

此时,编译器的错误消失,此前编写的测试程序又可以正常编译和运行了。

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

本文永久链接码友网 » C#程序设计基础(入门篇) » 类库和程序集 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册