在本教程中,你将创建一个简单的实用工具库,其中包含单个字符串处理方法。
类库 定义应用程序调用的类型和方法。 如果库面向 .NET Standard 2.0,那么任何支持 .NET Standard 2.0 的 .NET 实现(包括 .NET Framework)都可以调用它。 如果库面向 .NET 10,则任何面向 .NET 10 的应用程序都可以调用它。 本教程演示如何以 .NET 10 为目标。
创建类库时,可以将其分发为第三方组件,也可以将其分发为包含一个或多个应用程序的捆绑组件。
先决条件
Visual Studio安装了.NET 桌面开发工作负载。 选择此工作负荷时,会自动安装.NET SDK。
有关详细信息,请参阅
使用 Visual Studio0 安装 .NET SDK。
- 最新的 .NET SDK
- Visual Studio Code 编辑器
- C# 开发套件
安装说明
在 Windows 上,可以使用这个 WinGet 配置文件来安装所有必备组件。 如果已安装某些内容,WinGet 将跳过此步骤。
- 下载该文件,然后双击以运行它。
- 阅读许可协议,键入 y,并在系统提示接受时按下 Enter。
- 如果在任务栏中收到闪烁的用户帐户控制(UAC)提示,请允许安装继续。
在其他平台上,需要单独安装其中每个组件。
- 从 .NET SDK 下载页下载建议的安装程序然后双击以运行它。 下载页可检测平台,并推荐平台的最新安装程序。
- 从 Visual Studio Code 主页下载最新的安装程序,然后双击以运行它。 该页还会检测平台,并且链接应该适合你的系统。
- 单击 C# DevKit 扩展页上的“安装”按钮。 这将打开Visual Studio代码,并询问是否要安装或启用扩展。 选择“安装”。
- 用于使用 GitHub Codespaces 的GitHub帐户。 如果还没有帐户,可以在 GitHub.com 创建一个免费帐户。
创建解决方案
首先创建一个空白解决方案来保存类库项目。 Visual Studio解决方案充当一个或多个项目的容器。 将相关项目添加到同一解决方案。
若要创建空白解决方案,请执行以下操作:
启动Visual Studio。
在“开始”窗口上,选择创建新项目。
在 创建新项目 页上,在搜索框中输入 解决方案。 选择“空白解决方案”模板,然后选择“下一步”。
在“配置新项目”页面上,在“解决方案名称”框中输入“ClassLibraryProjects”。 然后选择 创建。
首先,创建名为“StringLibrary”和关联解决方案的.NET类库项目。 解决方案充当一个或多个项目的容器。 你将向同一解决方案添加其他相关项目。
启动Visual Studio Code。
转到“资源管理器”视图,然后选择“创建.NET Project。 或者,可以使用 Ctrl+Shift+P(MacOS 上的 Command+Shift+P)打开命令面板,然后键入“.NET”,找到并选择.NET:“新建项目”命令。
选择项目模板 类库。
然后选择要创建新项目的位置:创建名为
ClassLibraryProjects的文件夹,然后选择它。将项目命名 StringLibrary。
选择 .sln 作为解决方案文件格式。
选择“ 显示所有模板”选项。
接下来选择.NET 10。 然后选择“ 创建项目”。
在“ 是否信任此文件夹中的文件作者?” 对话框中,选择“ 是”,我相信作者。 你可以信任作者,因为此文件夹只有由.NET生成的文件,并由你添加或修改。
首先,使用教程环境创建 GitHub Codespace,然后创建.NET类库项目。
打开浏览器窗口并导航到 教程代码空间 存储库。
选择绿色 代码 按钮,然后选择 “代码空间 ”选项卡。
选择
+标志或绿色的在主分支上创建代码空间按钮,以使用此环境创建新的代码空间。
当代码空间加载时,打开终端并导航到教程文件夹:
cd tutorials创建新的类库项目:
dotnet new classlib -n StringLibrary
创建类库项目
将名为 StringLibrary 的新.NET类库项目添加到解决方案。
右键单击 Solution Explorer 中的解决方案,然后选择 Add>New Project。
在“添加新项目”页面上,在搜索框中输入 库。 从语言列表中选择 C# 或 Visual Basic,然后从平台列表中选择所有平台。 选择“类库”模板,然后选择“下一步”。
在“配置新项目”页的“项目名称”框中,输入“StringLibrary”,然后选择“下一步”。
在 Additional information 页上,选择 .NET 10,然后选择 Create。
检查以确保库以正确的.NET版本为目标。 右键单击 Solution Explorer 中的库项目,然后选择 Properties。 Target Framework 文本框显示项目面向 .NET 10.0。
如果使用 Visual Basic,请清除 Default 命名空间文本框中的文本。
对于每个项目,Visual Basic会自动创建一个对应于项目名称的命名空间。 在本教程中,你将使用代码文件中的
namespace关键字定义顶级命名空间。将代码窗口中 Class1.cs 或 Class1.vb 的代码替换为以下代码,并保存文件。 如果未显示要使用的语言,请更改页面顶部的语言选择器。
namespace UtilityLibraries; public static class StringLibrary { public static bool StartsWithUpper(this string? str) { if (string.IsNullOrWhiteSpace(str)) return false; return char.IsUpper(str[0]); } }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,验证项目是否编译正确。
项目创建完成后,Class1.cs 将打开。
将 Class1.cs 的内容替换为以下代码:
namespace UtilityLibraries; public static class StringLibrary { public static bool StartsWithUpper(this string? str) { if (string.IsNullOrWhiteSpace(str)) return false; return char.IsUpper(str[0]); } }类库
UtilityLibraries.StringLibrary包含名为StartsWithUpper的方法。 此方法返回一个 Boolean 值,该值指示当前字符串实例是否以大写字符开头。 Unicode 标准将大写字符与小写字符区分开来。 如果字符为大写,Char.IsUpper(Char) 方法将返回true。保存文件。
展开 Solution Explorer,它位于 Explorer 视图的底部。
右键单击 Solution Explorer 中的解决方案,然后选择 Build,或打开命令面板并选择 .NET:Build 以生成解决方案并验证项目编译是否没有错误。
终端输出如以下示例所示:
Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net10.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
导航到 StringLibrary 文件夹:
cd StringLibrary打开 Class1.cs 并将其内容替换为以下代码:
namespace UtilityLibraries; public static class StringLibrary { public static bool StartsWithUpper(this string? str) { if (string.IsNullOrWhiteSpace(str)) return false; return char.IsUpper(str[0]); } }类库
UtilityLibraries.StringLibrary包含名为StartsWithUpper的方法。 此方法返回一个 Boolean 值,该值指示当前字符串实例是否以大写字符开头。 Unicode 标准将大写字符与小写字符区分开来。 如果字符为大写,Char.IsUpper(Char) 方法将返回true。保存文件并生成项目:
dotnet build构建应成功且没有错误。
将控制台应用添加到解决方案
添加使用类库的控制台应用程序。 应用将提示用户输入字符串并报告字符串是否以大写字符开头。
将名为 ShowCase 的新.NET控制台应用程序添加到解决方案。
右键单击 Solution Explorer 中的解决方案,然后选择 Add>New Project。
在“创建新项目”页面,在搜索框中输入“控制台”。 从语言列表中选择 C# 或 Visual Basic,然后从平台列表中选择所有平台。
选择“控制台应用”模板,然后选择“下一步”。
在“配置新项目”页面,在“项目名称”框中输入“ShowCase”。 然后选择“下一步”。
在 Additional information 页上,在 Framework 框中选择 .NET 10。 然后选择 创建。
在 Program.cs 或 Program.vb 文件的代码窗口中,将所有代码替换为以下代码。
using System; using UtilityLibraries; int row = 0; do { if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrWhiteSpace(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 键,应用程序将结束,控制台窗口将关闭。
右键单击 Solution Explorer 中的解决方案,然后选择“New Project,或在命令面板中选择”.NET:新建项目。
选择 控制台应用。
为它命名 ShowCase,选择默认目录,然后选择“ 创建项目”。
打开 ShowCase/Program.cs,并将所有代码替换为以下代码。
using System; using UtilityLibraries; int row = 0; do { if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrWhiteSpace(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; }该代码使用
row变量来维护写入控制台窗口的数据行数的计数。 每当它大于或等于 25 时,代码将清除控制台窗口并向用户显示消息。程序提示用户输入字符串。 它指示字符串是否以大写字符开头。 如果用户在没有输入字符串的情况下按 Enter 键,应用程序将结束,控制台窗口将关闭。
保存所做的更改。
导航回教程文件夹并创建新的控制台应用:
cd .. dotnet new console -n ShowCase打开 ShowCase/Program.cs, 并将所有代码替换为以下代码:
using System; using UtilityLibraries; int row = 0; do { if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrWhiteSpace(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; }该代码使用
row变量来维护写入控制台窗口的数据行数的计数。 每当它大于或等于 25 时,代码将清除控制台窗口并向用户显示消息。程序提示用户输入字符串。 它指示字符串是否以大写字符开头。 如果用户在没有输入字符串的情况下按 Enter 键,应用程序将结束,控制台窗口将关闭。
保存所做的更改。
添加项目引用
最初,新的控制台应用项目无权访问类库。 若要允许它在类库中调用方法,请创建对类库项目的项目引用。
在 Solution Explorer 中,右键单击
ShowCase项目的 Dependencies 节点,然后选择 Add Project Reference。
在“引用管理器”对话框中,选择“StringLibrary”项目,然后选择“确定”按钮。
在 Solution Explorer 右键单击 ShowCase 项目,然后选择 Add Project Reference。
选择 StringLibrary。
小窍门
或者,将以下内容添加到 ShowCase.csproj:
<ItemGroup>
<ProjectReference Include="..\StringLibrary\StringLibrary.csproj" />
</ItemGroup>
在 ShowCase 项目中添加对 StringLibrary 项目的引用:
cd ShowCase
dotnet add reference ../StringLibrary/StringLibrary.csproj
运行应用
在 Solution Explorer 中,右键单击 ShowCase 项目,然后在上下文菜单中选择 Set 作为 StartUp Project。
按 Ctrl +F5 编译并运行程序,而无需调试。
尝试输入字符串并按 Enter,然后按 Enter 退出程序。
使用顶部菜单栏选择运行>调试前运行。
选择C#。
选择 C#:ShowCase。
如果收到错误,指出未加载 C# 程序,请关闭已打开的文件夹,然后打开
ShowCase文件夹。 然后再次尝试运行应用。尝试输入字符串并按 Enter,然后按 Enter 退出程序。
终端输出如以下示例所示:
Press <Enter> only to exit; otherwise, enter a string and press <Enter>: A string that starts with an uppercase letter Input: A string that starts with an uppercase letter Begins with uppercase? : Yes a string that starts with a lowercase letter Input: a string that starts with a lowercase letter Begins with uppercase? : No
运行 ShowCase 应用:
dotnet run尝试输入字符串并按 Enter,然后按 Enter 退出程序。
终端输出如以下示例所示:
Press <Enter> only to exit; otherwise, enter a string and press <Enter>: A string that starts with an uppercase letter Input: A string that starts with an uppercase letter Begins with uppercase? : Yes a string that starts with a lowercase letter Input: a string that starts with a lowercase letter Begins with uppercase? : No
其他资源
清理资源
GitHub在处于非活动状态 30 天后自动删除 Codespace。 如果打算探索本系列中的更多教程,您可以保留 Codespace 配置。 如果已准备好访问 .NET 站点下载 .NET SDK,则可以删除 Codespace。 若要删除 Codespace,请打开浏览器窗口并导航到 Codespaces。 可在窗口中看到代码空间的列表。 在“学习教程代码空间”的条目中选择三个点(...)。 然后选择“删除”。
后续步骤
在本教程中,你创建了一个类库。 下一教程介绍如何对类库进行单元测试。
或者,可以跳过自动化单元测试,并了解如何通过创建 NuGet 包来共享库:
或者,了解如何发布控制台应用。 如果从本教程中创建的解决方案发布控制台应用,则类库会将其作为 .dll 文件一起发布。