教程:使用 Visual Studio Code 创建 .NET 类库
在本教程中,将创建包含一个字符串处理方法的简单实用工具库。
类库定义的是可以由应用程序调用的类型和方法。 如果库以 .NET Standard 2.0 为目标,则支持 .NET Standard 2.0 的任何 .NET 实现(包括 .NET Framework)均可调用该库。 如果库以 .NET 8 为目标,则以 .NET 8 为目标的任何应用程序均可调用该库。 本教程演示如何以 .NET 8 为目标。
创建类库后,可将其作为第三方组件进行分发,也可将其作为与一个或多个应用程序捆绑在一起的组件进行分发。
先决条件
已安装 C# 扩展 的 Visual Studio Code。
如果你安装了 C# 开发工具包扩展,请将其卸载或禁用。 本教程系列未使用该扩展。
有关如何在 Visual Studio Code 上安装扩展的信息,请访问 VS Code 扩展市场。
创建解决方案
首先,创建一个空白解决方案来放置类库项目。 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。
启动 Visual Studio Code。
从主菜单中选择“文件”>“打开文件夹”(在 macOS 上为“打开...”)
在“打开文件夹”对话框中,创建“ClassLibraryProjects”文件夹,然后单击“选择文件夹”(在 macOS 上为“打开”)。
在主菜单中选择“视图”>“终端”,从 Visual Studio Code 中打开“终端” 。
“终端”在“ClassLibraryProjects”文件夹中连同命令提示符一起打开。
在“终端”中输入以下命令:
dotnet new sln
终端输出如以下示例所示:
The template "Solution File" was created successfully.
创建类库项目
将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。
在终端中,运行以下命令创建库项目:
dotnet new classlib -o StringLibrary
-o
或--output
命令指定用于放置生成的输出的位置。终端输出如以下示例所示:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
运行以下命令,向解决方案添加库项目:
dotnet sln add StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
检查以确保该库以 .NET 8 为目标。 在资源管理器中,打开 StringLibrary/StringLibrary.csproj。
TargetFramework
元素表明项目以 .NET 8.0 为目标。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> </PropertyGroup> </Project>
打开 Class1.cs 并将代码替换为以下代码。
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); } }
类库
UtilityLibraries.StringLibrary
包含一个名为StartsWithUpper
的方法。 此方法会返回 Boolean 值,以指明当前字符串实例是否以大写字符开头。 Unicode 标准会区分大小写字符。 如果为大写字符,Char.IsUpper(Char) 方法返回true
。保存该文件。
运行以下命令以生成解决方案,并验证项目是否正确编译。
dotnet build
终端输出如以下示例所示:
Microsoft (R) Build Engine version 17.8.0+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net8.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
向解决方案添加控制台应用
添加使用类库的控制台应用程序。 应用将提示用户输入字符串,并报告字符串是否以大写字符开头。
在终端中,运行以下命令创建控制台应用项目:
dotnet new console -o ShowCase
终端输出如以下示例所示:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
运行以下命令,向解决方案添加控制台应用项目:
dotnet sln add ShowCase/ShowCase.csproj
终端输出如以下示例所示:
Project `ShowCase\ShowCase.csproj` added to the solution.
打开 ShowCase/Program.cs 并将所有代码替换为以下代码。
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}"); 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; } } }
该代码使用
row
变量来维护写入到控制台窗口的数据行数计数。 如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。该程序会提示用户输入字符串。 它会指明字符串是否以大写字符开头。 如果用户没有输入字符串就按 Enter 键,那么应用程序会终止,控制台窗口会关闭。
保存更改。
添加项目引用
最初,新的控制台应用项目无权访问类库。 若要允许该项目调用类库中的方法,可以创建对类库项目的项目引用。
运行下面的命令:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
运行应用
在终端中运行以下命令:
dotnet run --project ShowCase/ShowCase.csproj
输入字符串并按 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
其他资源
后续步骤
在本教程中,你创建了一个解决方案,添加了一个库项目,并添加了一个使用该库的控制台应用项目。 在下一教程中,将向解决方案中添加单元测试项目。
在本教程中,将创建包含一个字符串处理方法的简单实用工具库。
类库定义的是可以由应用程序调用的类型和方法。 如果库以 .NET Standard 2.0 为目标,则支持 .NET Standard 2.0 的任何 .NET 实现(包括 .NET Framework)均可调用该库。 如果库以 .NET 7 为目标,则以 .NET 7 为目标的任何应用程序均可调用该库。 本教程演示如何以 .NET 7 为目标。
创建类库后,可将其作为第三方组件进行分发,也可将其作为与一个或多个应用程序捆绑在一起的组件进行分发。
先决条件
- 已安装 C# 扩展 的 Visual Studio Code。 有关如何在 Visual Studio Code 上安装扩展的信息,请访问 VS Code 扩展市场。
- .NET 7 SDK。
创建解决方案
首先,创建一个空白解决方案来放置类库项目。 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。
启动 Visual Studio Code。
从主菜单中选择“文件”>“打开文件夹”(在 macOS 上为“打开...”)
在“打开文件夹”对话框中,创建“ClassLibraryProjects”文件夹,然后单击“选择文件夹”(在 macOS 上为“打开”)。
在主菜单中选择“视图”>“终端”,从 Visual Studio Code 中打开“终端” 。
“终端”在“ClassLibraryProjects”文件夹中连同命令提示符一起打开。
在“终端”中输入以下命令:
dotnet new sln
终端输出如以下示例所示:
The template "Solution File" was created successfully.
创建类库项目
将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。
在终端中,运行以下命令创建库项目:
dotnet new classlib -o StringLibrary
-o
或--output
命令指定用于放置生成的输出的位置。终端输出如以下示例所示:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
运行以下命令,向解决方案添加库项目:
dotnet sln add StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
检查以确保该库以 .NET 7 为目标。 在资源管理器中,打开 StringLibrary/StringLibrary.csproj。
TargetFramework
元素表明项目以 .NET 7.0 为目标。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net7.0</TargetFramework> </PropertyGroup> </Project>
打开 Class1.cs 并将代码替换为以下代码。
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); } }
类库
UtilityLibraries.StringLibrary
包含一个名为StartsWithUpper
的方法。 此方法会返回 Boolean 值,以指明当前字符串实例是否以大写字符开头。 Unicode 标准会区分大小写字符。 如果为大写字符,Char.IsUpper(Char) 方法返回true
。保存该文件。
运行以下命令以生成解决方案,并验证项目是否正确编译。
dotnet build
终端输出如以下示例所示:
Microsoft (R) Build Engine version 16.7.4+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net7.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
向解决方案添加控制台应用
添加使用类库的控制台应用程序。 应用将提示用户输入字符串,并报告字符串是否以大写字符开头。
在终端中,运行以下命令创建控制台应用项目:
dotnet new console -o ShowCase
终端输出如以下示例所示:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
运行以下命令,向解决方案添加控制台应用项目:
dotnet sln add ShowCase/ShowCase.csproj
终端输出如以下示例所示:
Project `ShowCase\ShowCase.csproj` added to the solution.
打开 ShowCase/Program.cs 并将所有代码替换为以下代码。
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}"); 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; } } }
该代码使用
row
变量来维护写入到控制台窗口的数据行数计数。 如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。该程序会提示用户输入字符串。 它会指明字符串是否以大写字符开头。 如果用户没有输入字符串就按 Enter 键,那么应用程序会终止,控制台窗口会关闭。
保存更改。
添加项目引用
最初,新的控制台应用项目无权访问类库。 若要允许该项目调用类库中的方法,可以创建对类库项目的项目引用。
运行下面的命令:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
运行应用
在终端中运行以下命令:
dotnet run --project ShowCase/ShowCase.csproj
输入字符串并按 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
其他资源
后续步骤
在本教程中,你创建了一个解决方案,添加了一个库项目,并添加了一个使用该库的控制台应用项目。 在下一教程中,将向解决方案中添加单元测试项目。
在本教程中,将创建包含一个字符串处理方法的简单实用工具库。
类库定义的是可以由应用程序调用的类型和方法。 如果库以 .NET Standard 2.0 为目标,则支持 .NET Standard 2.0 的任何 .NET 实现(包括 .NET Framework)均可调用该库。 如果库以 .NET 6 为目标,则以 .NET 6 为目标的任何应用程序均可调用该库。 本教程演示如何以 .NET 6 为目标。
创建类库后,可将其作为第三方组件进行分发,也可将其作为与一个或多个应用程序捆绑在一起的组件进行分发。
先决条件
- 已安装 C# 扩展 的 Visual Studio Code。 有关如何在 Visual Studio Code 上安装扩展的信息,请访问 VS Code 扩展市场。
- .NET 6 SDK。
创建解决方案
首先,创建一个空白解决方案来放置类库项目。 解决方案用作一个或多个项目的容器。 将其他相关项目添加到同一个解决方案中。
启动 Visual Studio Code。
从主菜单中选择“文件”>“打开文件夹”(在 macOS 上为“打开...”)
在“打开文件夹”对话框中,创建“ClassLibraryProjects”文件夹,然后单击“选择文件夹”(在 macOS 上为“打开”)。
在主菜单中选择“视图”>“终端”,从 Visual Studio Code 中打开“终端” 。
“终端”在“ClassLibraryProjects”文件夹中连同命令提示符一起打开。
在“终端”中输入以下命令:
dotnet new sln
终端输出如以下示例所示:
The template "Solution File" was created successfully.
创建类库项目
将名为“StringLibrary”的新 .NET 类库项目添加到解决方案。
在终端中,运行以下命令创建库项目:
dotnet new classlib -f net6.0 -o StringLibrary
-f
或--framework
命令会将默认目标框架更改为net6.0
版本。-o
或--output
命令指定用于放置生成的输出的位置。终端输出如以下示例所示:
The template "Class library" was created successfully. Processing post-creation actions... Running 'dotnet restore' on StringLibrary\StringLibrary.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\StringLibrary\StringLibrary.csproj (in 328 ms). Restore succeeded.
运行以下命令,向解决方案添加库项目:
dotnet sln add StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Project `StringLibrary\StringLibrary.csproj` added to the solution.
检查以确保该库以 .NET 6 为目标。 在资源管理器中,打开 StringLibrary/StringLibrary.csproj。
TargetFramework
元素表明项目以 .NET 6.0 为目标。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> </Project>
打开 Class1.cs 并将代码替换为以下代码。
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); } }
类库
UtilityLibraries.StringLibrary
包含一个名为StartsWithUpper
的方法。 此方法会返回 Boolean 值,以指明当前字符串实例是否以大写字符开头。 Unicode 标准会区分大小写字符。 如果为大写字符,Char.IsUpper(Char) 方法返回true
。保存该文件。
运行以下命令以生成解决方案,并验证项目是否正确编译。
dotnet build
终端输出如以下示例所示:
Microsoft (R) Build Engine version 16.7.0+b89cb5fde for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net6.0\StringLibrary.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:02.78
向解决方案添加控制台应用
添加使用类库的控制台应用程序。 应用将提示用户输入字符串,并报告字符串是否以大写字符开头。
在终端中,运行以下命令创建控制台应用项目:
dotnet new console -f net6.0 -o ShowCase
终端输出如以下示例所示:
The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on ShowCase\ShowCase.csproj... Determining projects to restore... Restored C:\Projects\ClassLibraryProjects\ShowCase\ShowCase.csproj (in 210 ms). Restore succeeded.
运行以下命令,向解决方案添加控制台应用项目:
dotnet sln add ShowCase/ShowCase.csproj
终端输出如以下示例所示:
Project `ShowCase\ShowCase.csproj` added to the solution.
打开 ShowCase/Program.cs 并将所有代码替换为以下代码。
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}"); 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; } } }
该代码使用
row
变量来维护写入到控制台窗口的数据行数计数。 如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。该程序会提示用户输入字符串。 它会指明字符串是否以大写字符开头。 如果用户没有输入字符串就按 Enter 键,那么应用程序会终止,控制台窗口会关闭。
保存更改。
添加项目引用
最初,新的控制台应用项目无权访问类库。 若要允许该项目调用类库中的方法,可以创建对类库项目的项目引用。
运行下面的命令:
dotnet add ShowCase/ShowCase.csproj reference StringLibrary/StringLibrary.csproj
终端输出如以下示例所示:
Reference `..\StringLibrary\StringLibrary.csproj` added to the project.
运行应用
在终端中运行以下命令:
dotnet run --project ShowCase/ShowCase.csproj
输入字符串并按 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
其他资源
后续步骤
在本教程中,你创建了一个解决方案,添加了一个库项目,并添加了一个使用该库的控制台应用项目。 在下一教程中,将向解决方案中添加单元测试项目。