教程:使用 Visual Studio 创建 .NET 类库
在本教程中,你将创建一个包含单个字符串处理方法的简单类库。
类库 定义应用程序调用的类型和方法。 如果库面向 .NET Standard 2.0,则任何支持 .NET Standard 2.0 的 .NET 实现(包括 .NET Framework)都可以调用它。 如果库面向 .NET 8,则任何面向 .NET 8 的应用程序都可以调用它。 本教程演示如何以 .NET 8 为目标。
创建类库时,可以将其分发为 NuGet 包,也可以将其作为与使用该库的应用程序捆绑在一起的组件分发。
先决条件
已安装 .NET 桌面开发工作负载的 Visual Studio 2022。 选择此工作负荷时,会自动安装 .NET 8 SDK。
有关详细信息,请参阅 使用 Visual Studio安装 .NET SDK。
创建解决方案
首先创建一个空白解决方案以存放类库项目。 Visual Studio 解决方案充当一个或多个项目的容器。 你将向同一解决方案添加其他相关项目。
若要创建空白解决方案,请执行以下操作:
启动 Visual Studio。
在开始窗口中,选择 创建新项目。
在 创建新项目 页上,在搜索框中输入 解决方案。 选择“空白解决方案”模板,然后选择“下一步”。
Visual Studio 中的
空白解决方案模板 在“配置新项目”页面上,在“解决方案名称”框中输入“ClassLibraryProjects”。 然后选择 创建。
创建类库项目
将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。
右键单击 解决方案资源管理器 中的解决方案,然后选择“添加>新建项目。
在“添加新项目”页面上,在搜索框中输入 库。 从语言列表中选择 C# 或 Visual Basic,然后从平台列表中选择 所有平台。 选择“类库”模板,然后选择“下一步”。
在“配置新项目”页的“项目名称”框中,输入“StringLibrary”,然后选择“下一步”。
在其他信息页上,选择 .NET 8,然后选择创建。
检查以确保库以正确的 .NET 版本为目标。 右键单击 解决方案资源管理器中的库项目,然后选择 属性。 目标框架 文本框显示该项目的目标是 .NET 8.0。
如果使用 Visual Basic,请清除 根命名空间 文本框中的文本。
对于每个项目,Visual Basic 会自动创建一个对应于项目名称的命名空间。 在本教程中,你将使用代码文件中的
namespace
关键字定义顶级命名空间。将代码窗口中 Class1.cs 或 Class1.vb 的代码替换为以下代码,并保存文件。 如果未显示要使用的语言,请更改页面顶部的语言选择器。
using System; namespace UtilityLibraries { public static class StringLibrary { public static bool StartsWithUpper(this string str) { if (string.IsNullOrWhiteSpace(str)) return false; char ch = str[0]; return char.IsUpper(ch); } } }
Imports System.Runtime.CompilerServices Namespace UtilityLibraries Public Module StringLibrary <Extension> Public Function StartsWithUpper(str As String) As Boolean If String.IsNullOrWhiteSpace(str) Then Return False End If Dim ch As Char = str(0) Return Char.IsUpper(ch) End Function End Module End Namespace
类库
UtilityLibraries.StringLibrary
包含名为StartsWithUpper
的方法。 此方法返回一个 Boolean 值,该值指示当前字符串实例是否以大写字符开头。 Unicode 标准将大写字符与小写字符区分开来。 如果字符为大写,Char.IsUpper(Char) 方法将返回true
。StartsWithUpper
以扩展方法的形式进行实现,这样就可以将其作为 String 类成员进行调用。 C# 代码中string
后的问号(?
)指示字符串可能为 null。在菜单栏上,选择生成>生成解决方案或按 Ctrl+Shift+B,验证项目是否编译正确。
将控制台应用添加到解决方案
添加使用类库的控制台应用程序。 应用将提示用户输入字符串并报告字符串是否以大写字符开头。
将名为“ShowCase”的新 .NET 控制台应用程序添加到解决方案。
右键单击 解决方案资源管理器 中的解决方案,然后选择“添加>新项目。
在“创建新项目”页面,在搜索框中输入“控制台”。 从语言列表中选择 C# 或 Visual Basic,然后从平台列表中选择 所有平台。
选择“控制台应用程序”模板,然后选择“下一步”。
在“配置新项目”页面,在“项目名称”框中输入“ShowCase”。 然后,选择“下一步”。
在附加信息页的框架框中选择 .NET 8。 然后选择 创建。
在 Program.cs 或 Program.vb 文件的代码窗口中,将所有代码替换为以下代码。
using System; using UtilityLibraries; class Program { static void Main(string[] args) { int row = 0; do { if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) break; Console.WriteLine($"Input: {input} {"Begins with uppercase? ",30}: " + $"{(input.StartsWithUpper() ? "Yes" : "No")}{Environment.NewLine}"); row += 3; } while (true); return; // Declare a ResetConsole local method void ResetConsole() { if (row > 0) { Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } Console.Clear(); Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}"); row = 3; } } }
Imports UtilityLibraries Module Program Dim row As Integer = 0 Sub Main() Do If row = 0 OrElse row >= 25 Then ResetConsole() Dim input As String = Console.ReadLine() If String.IsNullOrEmpty(input) Then Return Console.WriteLine($"Input: {input} {"Begins with uppercase? ",30}: " + $"{If(input.StartsWithUpper(), "Yes", "No")} {Environment.NewLine}") row += 3 Loop While True End Sub Private Sub ResetConsole() If row > 0 Then Console.WriteLine("Press any key to continue...") Console.ReadKey() End If Console.Clear() Console.WriteLine($"{Environment.NewLine}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{Environment.NewLine}") row = 3 End Sub End Module
该代码使用
row
变量来维护写入控制台窗口的数据行数的计数。 每当它大于或等于 25 时,代码将清除控制台窗口并向用户显示消息。程序提示用户输入字符串。 它指示字符串是否以大写字符开头。 如果用户在没有输入字符串的情况下按 Enter 键,应用程序将结束,控制台窗口将关闭。
添加项目引用
最初,新的控制台应用项目无权访问类库。 若要允许它在类库中调用方法,请创建对类库项目的项目引用。
在 解决方案资源管理器中,右键单击
ShowCase
项目的 依赖项 节点,然后选择 添加项目引用。中添加引用上下文菜单
在“引用管理器”对话框中,选择“StringLibrary”项目,然后选择“确定”按钮。
运行应用
在 解决方案资源管理器中,右键单击 ShowCase 项目,然后在上下文菜单中选择“设置为启动项目”。
按 Ctrl +F5 编译并运行程序,而无需调试。
尝试输入字符串并按 Enter,然后按 Enter 退出程序。
其他资源
后续步骤
在本教程中,你创建了一个类库。 下一教程介绍如何对类库进行单元测试。
或者,可以跳过自动化单元测试,并了解如何通过创建 NuGet 包来共享库:
使用 Visual Studio 创建和发布包
或者了解如何发布控制台应用。 如果从本教程中创建的解决方案发布控制台应用,则类库会将其作为 .dll 文件一起发布。
使用 Visual Studio 发布 .NET 控制台应用程序