在 Visual Studio 2017 中使用 .NET Standard 库Consume a .NET Standard library in Visual Studio 2017
本文内容
如果已按照使用 Visual Studio 2017 生成 C# .NET Core 类库或使用 Visual Studio 2017 生成 Visual Basic .NET Core 类库以及使用 Visual Studio 2017 测试 .NET Core 类库中的步骤创建并测试 .NET Standard 类库,并且已生成库的发布版本,下一步就是使其可供调用方使用。可以通过以下两种方式执行此操作:
如果库将供一个解决方案使用(例如,如果它是一个大型应用程序中的组件),可以将其以项目的形式添加到解决方案中。
如果类库将供更多调用方使用,可以 NuGet 包的形式分发它。
将类库以项目的形式添加到解决方案中Including a library as a project in a solution
就像将单元测试和类库添加到同一解决方案中一样,可以将应用程序添加到同一解决方案中。例如,可在控制台应用程序中使用类库,此应用程序将提示用户输入字符串,并报告第一个字符是否为大写:
- C#
打开在使用 Visual Studio 2017 生成 C# .NET Core 类库主题中创建的
ClassLibraryProjects
解决方案。在“解决方案资源管理器” 中,右键单击“ClassLibraryProjects” 解决方案,然后从上下文菜单依次选择“添加” > “新项目” 。在“添加新项目” 对话框中,展开“Visual C#” 节点,再依次选择“.NET Core” 节点和“控制台应用程序(.NET Core)” 项目模板。在“名称” 文本框中,键入“ShowCase”,然后选择“确定” 按钮。
- 在“解决方案资源管理器”中,右键单击“ShowCase”项目,在上下文菜单中选择“设为启动项目”。
- 项目一开始无权访问类库。若要允许项目调用类库中的方法,可以创建对该类库的引用。在“解决方案资源管理器” 中,右键单击
ShowCase
项目的“依赖项” 节点,并选择“添加引用” 。
- 在“引用管理器” 对话框中,选择类库项目“StringLibrary” ,然后选择“确定” 按钮。
- 在“Program.cs” 文件的代码窗口中,将所有代码替换为以下代码:
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")}\n");
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("\nPress <Enter> only to exit; otherwise, enter a string and press <Enter>:\n");
row = 3;
}
}
}
该代码使用 row
变量来维护写入到控制台窗口的数据行数计数。如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。
该程序会提示用户输入字符串。它会指明字符串是否以大写字符开头。如果用户没有输入字符串就按 Enter 键,应用程序会终止且控制台窗口会关闭。
- 必要时,将工具栏更改为编译
ShowCase
项目的“调试” 版本。选择“ShowCase” 按钮上的绿色箭头,编译并运行程序。
打开在使用 Visual Studio 2017 生成 Visual Basic .NET Core 类库主题中创建的
ClassLibraryProjects
解决方案。在“解决方案资源管理器” 中,右键单击“ClassLibraryProjects” 解决方案,然后从上下文菜单依次选择“添加” > “新项目” 。在“添加新项目” 对话框中,展开“Visual Basic” 节点,再依次选择“.NET Core” 节点和“控制台应用程序(.NET Core)” 项目模板。在“名称” 文本框中,键入“ShowCase”,然后选择“确定” 按钮。
- 在“解决方案资源管理器”中,右键单击“ShowCase”项目,在上下文菜单中选择“设为启动项目”。
- 项目一开始无权访问类库。若要允许项目调用类库中的方法,可以创建对该类库的引用。在“解决方案资源管理器” 中,右键单击
ShowCase
项目的“依赖项” 节点,并选择“添加引用” 。
- 在“引用管理器” 对话框中,选择类库项目“StringLibrary” ,然后选择“确定” 按钮。
- 在“Program.vb” 文件的代码窗口中,将所有代码替换为以下代码:
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")} {vbCrLf}")
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("{0}Press <Enter> only to exit; otherwise, enter a string and press <Enter>:{0}",
vbCrLf)
row = 3
End Sub
End Module
该代码使用 row
变量来维护写入到控制台窗口的数据行数计数。如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。
该程序会提示用户输入字符串。它会指明字符串是否以大写字符开头。如果用户没有输入字符串就按 Enter 键,应用程序会终止且控制台窗口会关闭。
- 必要时,将工具栏更改为编译
ShowCase
项目的“调试” 版本。选择“ShowCase” 按钮上的绿色箭头,编译并运行程序。
可以按照使用 Visual Studio 2017 调试 Hello World 应用程序和使用 Visual Studio 2017 发布 Hello World 应用程序中的步骤操作,调试并发布使用此库的应用程序。
以 NuGet 包的形式分发类库Distributing the library in a NuGet package
可采用 NuGet 包的形式发布类库,让类库可供更多调用方使用。Visual Studio 不支持创建 NuGet 包。若要创建 NuGet 包,请使用 dotnet
命令行实用工具:
打开控制台窗口。例如,在 Windows 任务栏的“有问题尽管问我” 文本框中,输入
Command Prompt
(或缩写cmd
),然后选择“命令提示符” 桌面应用或按 Enter(如果已在搜索结果中选中控制台窗口),打开控制台窗口。转到类库的项目目录。除非重新配置了典型文件位置,否则文件通常位于 Documents\Visual Studio 2017\Projects\ClassLibraryProjects\StringLibrary 目录中。此目录包含源代码和项目文件 StringLibrary.csproj 。
发出命令
dotnet pack —no-build
。此时,dotnet
实用工具会生成一个扩展名为 .nupkg 的包。
提示
如果路径中没有包含 dotnet.exe 的目录,可以通过在控制台窗口中输入 where dotnet.exe
来找到它的位置。
若要详细了解如何创建 NuGet 包,请参阅如何使用跨平台工具创建 NuGet 包。