教程:使用 Visual Studio for Mac 创建 .NET 类库

重要

Microsoft 已宣布停用 Visual Studio for Mac。 自 2024 年 8 月 31 日起,不再支持 Visual Studio for Mac。 替代方案包括:

  • 具有 C# 开发工具包和相关扩展(例如 .NET MAUIUnity)的 Visual Studio Code。
  • 在 Mac 上的 VM 中的 Windows 上运行的 Visual Studio。
  • 云端 VM 中的 Windows 上运行的 Visual Studio。

For more information, see Visual Studio for Mac 停用公告.

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

类库定义的是可以由应用程序调用的类型和方法。 如果库以 .NET Standard 2.0 为目标,则支持 .NET Standard 2.0 的任何 .NET 实现(包括 .NET Framework)均可调用该库。 如果库以 .NET 5 为目标,则以 .NET 5 为目标的任何应用程序均可调用该库。 本教程演示如何以 .NET 5 为目标。

注意

你的反馈非常有价值。 有两种方法可以向开发团队提供有关 Visual Studio for Mac 的反馈:

  • 在 Visual Studio for Mac 中,从菜单选择“帮助”>“报告问题”,或从欢迎屏幕中选择“报告问题”,将打开一个窗口,以供填写 bug 报告。 可在开发人员社区门户中跟踪自己的反馈。
  • 若要提出建议,从菜单中选择“帮助”>“提供建议”,或从欢迎屏幕中选择“提供建议”,转到 Visual Studio for Mac 开发人员社区网页

先决条件

创建包含类库项目的解决方案

Visual Studio 解决方案用作一个或多个项目的容器。 创建解决方案和解决方案中的类库项目。 稍后将其他相关项目添加到同一个解决方案中。

  1. 启动 Visual Studio for Mac。

  2. 在“开始”窗口中,选择“新建项目”。

  3. 在“为新项目选择一个模板”对话框中选择“Web 和控制台”>“库”>“类库”然后选择“下一步”。

    New Project dialog

  4. 在“配置新的类库”对话框中,选择“.NET 5.0”,然后选择“下一步”。

  5. 将项目命名为“StringLibrary”,并将解决方案命名为“ClassLibraryProjects”。 使“在解决方案目录中创建项目目录”保持选中状态。 选择创建

    Visual Studio for Mac New project dialog options

  6. 从主菜单中,选择“视图”>“解决方案”,然后选择“停靠”图标使边栏保持打开状态。

    Dock icon for Solution pad

  7. 在“解决方案”板中,展开 StringLibrary 节点来显示模板提供的类文件 Class1.cs。按下 Ctrl 并单击文件,从上下文菜单中选择“重命名”,然后将文件重命名为 StringLibrary.cs。 打开文件并将内容替换为以下代码:

    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);
            }
        }
    }
    
  8. S (command+S) 以保存文件。

  9. 在 IDE 窗口底部边距处选择“错误”,打开“错误”面板。 选择“生成输出”按钮。

    Bottom margin of the Visual Studio Mac IDE showing the Errors button

  10. 从菜单中选择“生成”>“生成所有”。

    生成解决方案。 生成输出面板显示生成成功。

    Visual Studio Mac Build output pane of the Errors panel with Build successful message

向解决方案添加控制台应用

添加使用类库的控制台应用程序。 应用将提示用户输入字符串,并报告字符串是否以大写字符开头。

  1. 在“解决方案”边栏中,按住 Ctrl 并单击 ClassLibraryProjects 解决方案。 通过从“Web 和控制台”>“应用”模板中选择模板来添加新的“控制台应用程序”项目,然后选择“下一步”。

  2. 选择“.NET Core 5.0”作为“目标框架”,然后选择“下一步”。

  3. 将项目命名为“ShowCase”。 选择“创建”以在解决方案中创建项目。

    Add ShowCase project

  4. 打开 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")}{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;
            }
        }
    }
    

    该程序会提示用户输入字符串。 它会指明字符串是否以大写字符开头。 如果用户没有输入字符串就按 Enter 键,那么应用程序会终止,控制台窗口会关闭。

    该代码使用 row 变量来维护写入到控制台窗口的数据行数计数。 如果大于或等于 25,该代码将清除控制台窗口,并向用户显示一条消息。

添加项目引用

最初,新的控制台应用项目无权访问类库。 若要允许该项目调用类库中的方法,可以创建对类库项目的项目引用。

  1. 在“解决方案”边栏中,按住 Ctrl 并单击新“ShowCase”项目的“依赖项”节点。 在上下文菜单中,选择“添加引用”。

  2. 在“引用”对话框中,选择“StringLibrary”,然后选择“确定”。

运行应用

  1. 按住 Ctrl 并单击 ShowCase 项目,然后从上下文菜单中选择“运行项目”。

  2. 输入字符串并按 Enter 以试用程序,然后按 Enter 退出。

    Visual Studio for Mac console window showing your app running

其他资源

后续步骤

在本教程中,你创建了一个解决方案和一个库项目,并添加了一个使用该库的控制台应用项目。 在下一教程中,将向解决方案中添加单元测试项目。