概述
在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类库。
右键单击刚才创建的解决方案ClassLibraryDemo,依次选择添加 -> 新建项目,如图:
在弹出的添加新项目窗口中,选择类库模板(注意:不是类库(.NET Framework)),之后单击下一步,如图:
在弹出的配置新项目窗口中,填写项目名称,位置等信息,再单击下一步,如图:
在其他信息窗口中,选择目标框架为.NET 5.0(当前),最后点击创建按钮,如图:
2.检查创建好的Payment项目属性,右键单击项目Payment,选择属性菜单,如图:
在属性面板中,确保:默认命名空间是Payment,目标框架是.NET 5.0,输出类型是类库,如图:
3.删除Payment项目中自动创建的类Class1.cs文件,另外新增一个名为WeChatPay.cs,并编写模拟微信支付的代码,如下:
以上的WeChatPay.cs类文件中,声明了命名空间namespace Payment
,创建了一个Pay()
方法,接收支付账户和金额两个参数,分别为account
,amount
,方法内部是模拟的支付逻辑,方法的返回值是布尔类型。
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程序集的引用,如图:
此时,编译器的错误消失,此前编写的测试程序又可以正常编译和运行了。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册