在本教程中,将创建包含一个字符串处理方法的简单类库。

类库定义的是可以由应用程序调用的类型和方法。 如果库面向.NET标准 2.0,则任何实现 (包括支持 .NET Standard 2.0 的.NET框架) 都可以调用.NET它。 如果库面向 .NET 7,则任何面向 .NET 7 的应用程序都可以调用它。 本教程演示如何以 7 为目标 .NET 。

创建类库后,可将其作为 NuGet 包或作为与使用该类库的应用程序捆绑在一起的组件进行分发。

  • 安装了桌面开发工作负载的 .NET Visual Studio 2022 版本 17.4 。 .NET选择此工作负载时,会自动安装 7 SDK。

    有关详细信息,请参阅 使用 Visual Studio 安装 .NET SDK

    创建解决方案

    首先,创建一个空白解决方案来放置类库项目。 Visual Studio 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。

    创建空白解决方案:

  • 启动 Visual Studio。

  • 在“开始”窗口上,选择“创建新项目”。

  • 在“创建新项目”页面上,在搜索框中输入“解决方案”。 选择“空白解决方案”模板,然后选择“下一步”。

  • 在“配置新项目”页面上,在“解决方案名称”框中输入“ClassLibraryProjects”。 然后选择“创建”。

    创建类库项目

  • 将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。

  • 在“解决方案资源管理器”中,右键单击解决方案并选择“添加”>“新建项目” 。

  • 在“创建新项目”页面上,在搜索框中输入“库”。 从“语言”列表中选择“C#”或“Visual Basic”,然后从“平台”列表中选择“所有平台”。 选择“类库”模板,然后选择“下一步” 。

  • 在“配置新项目”页的“项目名称”框中,输入“StringLibrary”,然后选择“下一步” 。

  • 在“ 其他信息 ”页上,选择“ .NET 7 (标准期限支持) ”,然后选择“ 创建 ”。

  • 检查以确保库面向正确版本的 .NET。 右键单击“解决方案资源管理器”中的库项目,然后选择“属性”。 “ 目标框架 ”文本框显示项目面向 .NET 7.0。

  • 如果使用 Visual Basic,请清除“根命名空间”文本框中的文本。

    对于每个项目,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; 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”。 然后选择“下一步” 。

  • 在“ 其他信息 ”页上,在“ 框架 ”框中选择“ .NET7 (标准期限支持) ”。 然后选择“创建”。

  • 在“Program.cs”或“Program.vb”文件的代码窗口中,将所有代码替换为以下代码 。

    using UtilityLibraries; class Program static void Main(string[] args) int row = 0; if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) break; Console.WriteLine($"Input: {input}"); Console.WriteLine("Begins with uppercase? " + $"{(input.StartsWithUpper() ? "Yes" : "No")}"); Console.WriteLine(); row += 4; } 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() 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”项目,然后选择“确定”按钮 。

    在本教程中,将创建包含一个字符串处理方法的简单类库。

    类库定义的是可以由应用程序调用的类型和方法。 如果库面向.NET标准 2.0,则任何实现 (包括支持 .NET Standard 2.0 的.NET框架) 都可以调用.NET它。 如果库面向 .NET 6,则任何面向 .NET 6 的应用程序都可以调用它。 本教程演示如何确定目标 .NET 6。

    创建类库后,可将其作为 NuGet 包或作为与使用该类库的应用程序捆绑在一起的组件进行分发。

  • 安装了桌面开发工作负载的 .NET Visual Studio 2022 版本 17.0.0 预览版 。 .NET选择此工作负载时,会自动安装 6 SDK。

    有关详细信息,请参阅 使用 Visual Studio 安装 .NET SDK

    创建解决方案

    首先,创建一个空白解决方案来放置类库项目。 Visual Studio 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。

    创建空白解决方案:

  • 启动 Visual Studio。

  • 在“开始”窗口上,选择“创建新项目”。

  • 在“创建新项目”页面上,在搜索框中输入“解决方案”。 选择“空白解决方案”模板,然后选择“下一步”。

  • 在“配置新项目”页面上,在“解决方案名称”框中输入“ClassLibraryProjects”。 然后选择“创建”。

    创建类库项目

  • 将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。

  • 在“解决方案资源管理器”中,右键单击解决方案并选择“添加”>“新建项目” 。

  • 在“创建新项目”页面上,在搜索框中输入“库”。 从“语言”列表中选择“C#”或“Visual Basic”,然后从“平台”列表中选择“所有平台”。 选择“类库”模板,然后选择“下一步” 。

  • 在“配置新项目”页的“项目名称”框中,输入“StringLibrary”,然后选择“下一步” 。

  • 在“ 其他信息 ”页上,选择“ .NET 6 (长期支持) ”,然后选择“ 创建 ”。

  • 检查以确保库面向正确版本的 .NET。 右键单击“解决方案资源管理器”中的库项目,然后选择“属性”。 “ 目标框架 ”文本框显示项目面向 .NET 6.0。

  • 如果使用 Visual Basic,请清除“根命名空间”文本框中的文本。

    对于每个项目,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; 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”。 然后选择“下一步” 。

  • 在“ 其他信息 ”页上,在“ 框架 ”框中选择“ .NET6 (长期支持) ”。 然后选择“创建”。

  • 在“Program.cs”或“Program.vb”文件的代码窗口中,将所有代码替换为以下代码 。

    using UtilityLibraries; class Program static void Main(string[] args) int row = 0; if (row == 0 || row >= 25) ResetConsole(); string? input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) break; Console.WriteLine($"Input: {input}"); Console.WriteLine("Begins with uppercase? " + $"{(input.StartsWithUpper() ? "Yes" : "No")}"); Console.WriteLine(); row += 4; } 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() 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”项目,然后选择“确定”按钮 。

  •