教學課程:使用 Visual Studio 建立 .NET 類別庫

在本教學課程中,您會建立一個含有單一字串處理方法的簡單類別庫。

「類別庫」會定義應用程式所呼叫的類型和方法。 如果程式庫以 .NET Standard 2.0 為目標,則可以由任何 .NET 實作呼叫, (包括支援 .NET Standard 2.0 的.NET Framework) 。 如果程式庫以 .NET 7 為目標,則任何以 .NET 7 為目標的應用程式都可以呼叫它。 本教學課程說明如何以 .NET 7 為目標。

當您建立類別庫時,您可以將其發佈為 NuGet 封裝,或可以和使用它的應用程式配成套件的元件。

必要條件

建立解決方案

首先,建立空白解決方案,將類別庫專案放入其中。 將 Visual Studio 解決方案做為一或多個專案的容器。 請將其他相關專案新增至相同的解決方案。

若要建立空白解決方案:

  1. 啟動 Visual Studio。

  2. 在開始視窗中,選擇 [建立新專案]。

  3. 在 [建立新專案] 頁面上的搜尋方塊中輸入解決方案。 依序選擇空白解決方案範本和 [下一步]。

    Visual Studio 中的空白方案範本

  4. 在 [設定新專案] 頁面上的 [解決方案名稱] 方塊中輸入 ClassLibraryProjects。 接著,選擇 [建立] 。

建立類別庫專案

  1. 將名為 「StringLibrary」 的新 .NET 類別庫專案新增至方案。

    1. 在 [方案總管] 中以滑鼠右鍵按一下該解決方案,然後選取 [新增]>[新專案]。

    2. 在 [新增專案] 頁面上的搜尋方塊中輸入程式庫。 從語言清單中選擇 [C#] 或 [Visual Basic],然後從平台清單中選擇 [所有平台]。 依序選擇類別庫範本和 [下一步]。

    3. 在 [設定新專案] 頁面上的 [專案名稱] 方塊中輸入 StringLibraryy,然後選擇 [下一步]。

    4. 在 [ 其他資訊 ] 頁面上,選取 [.NET 7 (標準詞彙支援) ],然後選擇 [ 建立]。

  2. 檢查以確定程式庫以正確的 .NET 版本為目標。 以滑鼠右鍵按一下 [方案總管] 中的程式庫專案,然後選取 [屬性]。 [ 目標 Framework] 文字方塊會顯示專案以 .NET 7.0 為目標。

  3. 如果您使用 Visual Basic,請清除 [根命名空間] 文字方塊中的文字。

    類別庫的專案屬性

    Visual Basic 會為每個專案自動建立與專案名稱對應的命名空間。 在本教學課程中,您會使用程式碼檔案中的 namespace 關鍵字定義最上層的命名空間。

  4. 以下列程式碼會取代 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。

  5. 在功能表列上選取 [建置]>[建置解決方案],或按 Ctrl+Shift+B,驗證專案編譯是否沒有錯誤。

將主控台應用程式新增至解決方案

新增使用類別庫的主控台應用程式。 應用程式會提示使用者輸入字串,並回報字串是否以大寫字元開頭。

  1. 將名為 「ShowCase」 的新 .NET 主控台應用程式新增至方案。

    1. 在 [方案總管] 中以滑鼠右鍵按一下該解決方案,然後選取 [新增]>[新專案]。

    2. 在 [新增專案] 頁面上的搜尋方塊中輸入主控台。 從語言清單中選擇 [C#] 或 [Visual Basic],然後從平台清單中選擇 [所有平台]。

    3. 依序選擇主控台應用程式範本和 [下一步]。

    4. 在 [設定新專案] 頁面上的 [專案名稱] 方塊中輸入展示工具。 然後選擇 [下一步] 。

    5. 在 [其他資訊] 頁面上,選取 [架構] 方塊中的[.NET 7 (標準詞彙支援) 。 接著,選擇 [建立] 。

  2. 在 Program.cs 或 Program.vb 檔案的程式碼視窗中,以下列程式碼取代所有程式碼。

    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;
            }
        }
    }
    
    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 鍵,應用程式會終止且主控台視窗會關閉。

新增專案參考

一開始,新的主控台應用程式專案沒有類別庫的存取權。 若要讓該專案在類別庫中呼叫方法,請建立類別庫專案的專案參考。

  1. 在[方案總管] 中,以滑鼠右鍵按一下 ShowCase 專案的 [相依性] 節點,然後選取 [加入專案參考]。

    在 Visual Studio 中新增參考捷徑功能表

  2. 在 [參考管理員] 對話方塊中,依序選取 [StringLibrary] 專案和 [確定]。

    已選取 StringLibrary 的參考管理員對話方塊

執行應用程式

  1. 在方案總管 中,以滑鼠右鍵按一下 ShowCase 專案,然後在內容功能表中選取 [設定為啟始專案]

    可設定啟始專案的 Visual Studio 專案捷徑功能表

  2. 按下 Ctrl+F5 可省略偵錯步驟,直接編譯和執行程式。

    顯示 [偵錯] 按鈕的 Visual Studio 專案工具列

  3. 輸入字串並按 Enter,然後再按 Enter 可試用程式。

    執行展示工具的主控台視窗

其他資源

下一步

在本教學課程中,您已建立類別庫。 在下一個教學課程中,您會了解如何為類別庫進行單元測試。

您也可以跳過自動化單元測試,並了解如何透過建立 NuGet 封裝來共用程式庫:

或了解如何發佈主控台應用程式。 如果您透過在本教學課程中建立的解決方案發佈主控台應用程式,類別庫會將其當作 .dll 檔案使用。

在本教學課程中,您會建立一個含有單一字串處理方法的簡單類別庫。

「類別庫」會定義應用程式所呼叫的類型和方法。 如果程式庫以 .NET Standard 2.0 為目標,則可以由任何 .NET 實作呼叫, (包括支援 .NET Standard 2.0 的.NET Framework) 。 如果程式庫以 .NET 6 為目標,則任何以 .NET 6 為目標的應用程式都可以呼叫它。 本教學課程說明如何以 .NET 6 為目標。

當您建立類別庫時,您可以將其發佈為 NuGet 封裝,或可以和使用它的應用程式配成套件的元件。

必要條件

建立解決方案

首先,建立空白解決方案,將類別庫專案放入其中。 將 Visual Studio 解決方案做為一或多個專案的容器。 請將其他相關專案新增至相同的解決方案。

若要建立空白解決方案:

  1. 啟動 Visual Studio。

  2. 在開始視窗中,選擇 [建立新專案]。

  3. 在 [建立新專案] 頁面上的搜尋方塊中輸入解決方案。 依序選擇空白解決方案範本和 [下一步]。

    Visual Studio 中的空白方案範本

  4. 在 [設定新專案] 頁面上的 [解決方案名稱] 方塊中輸入 ClassLibraryProjects。 接著,選擇 [建立] 。

建立類別庫專案

  1. 將名為 「StringLibrary」 的新 .NET 類別庫專案新增至方案。

    1. 在 [方案總管] 中以滑鼠右鍵按一下該解決方案,然後選取 [新增]>[新專案]。

    2. 在 [新增專案] 頁面上的搜尋方塊中輸入程式庫。 從語言清單中選擇 [C#] 或 [Visual Basic],然後從平台清單中選擇 [所有平台]。 依序選擇類別庫範本和 [下一步]。

    3. 在 [設定新專案] 頁面上的 [專案名稱] 方塊中輸入 StringLibraryy,然後選擇 [下一步]。

    4. 在 [ 其他資訊 ] 頁面上,選取 [.NET 6 (長期支援) ],然後選擇 [ 建立]。

  2. 檢查以確定程式庫以正確的 .NET 版本為目標。 以滑鼠右鍵按一下 [方案總管] 中的程式庫專案,然後選取 [屬性]。 [ 目標 Framework] 文字方塊會顯示專案以 .NET 6.0 為目標。

  3. 如果您使用 Visual Basic,請清除 [根命名空間] 文字方塊中的文字。

    類別庫的專案屬性

    Visual Basic 會為每個專案自動建立與專案名稱對應的命名空間。 在本教學課程中,您會使用程式碼檔案中的 namespace 關鍵字定義最上層的命名空間。

  4. 以下列程式碼會取代 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。

  5. 在功能表列上選取 [建置]>[建置解決方案],或按 Ctrl+Shift+B,驗證專案編譯是否沒有錯誤。

將主控台應用程式新增至解決方案

新增使用類別庫的主控台應用程式。 應用程式會提示使用者輸入字串,並回報字串是否以大寫字元開頭。

  1. 將名為 「ShowCase」 的新 .NET 主控台應用程式新增至方案。

    1. 在 [方案總管] 中以滑鼠右鍵按一下該解決方案,然後選取 [新增]>[新專案]。

    2. 在 [新增專案] 頁面上的搜尋方塊中輸入主控台。 從語言清單中選擇 [C#] 或 [Visual Basic],然後從平台清單中選擇 [所有平台]。

    3. 依序選擇主控台應用程式範本和 [下一步]。

    4. 在 [設定新專案] 頁面上的 [專案名稱] 方塊中輸入展示工具。 然後選擇 [下一步] 。

    5. 在 [其他資訊] 頁面上,選取 [架構] 方塊中的[.NET 6 (長期支援) 。 接著,選擇 [建立] 。

  2. 在 Program.cs 或 Program.vb 檔案的程式碼視窗中,以下列程式碼取代所有程式碼。

    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;
            }
        }
    }
    
    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 鍵,應用程式會終止且主控台視窗會關閉。

新增專案參考

一開始,新的主控台應用程式專案沒有類別庫的存取權。 若要讓該專案在類別庫中呼叫方法,請建立類別庫專案的專案參考。

  1. 在[方案總管] 中,以滑鼠右鍵按一下 ShowCase 專案的 [相依性] 節點,然後選取 [加入專案參考]。

    在 Visual Studio 中新增參考捷徑功能表

  2. 在 [參考管理員] 對話方塊中,依序選取 [StringLibrary] 專案和 [確定]。

    已選取 StringLibrary 的參考管理員對話方塊

執行應用程式

  1. 在方案總管 中,以滑鼠右鍵按一下 ShowCase 專案,然後在內容功能表中選取 [設定為啟始專案]

    可設定啟始專案的 Visual Studio 專案捷徑功能表

  2. 按下 Ctrl+F5 可省略偵錯步驟,直接編譯和執行程式。

    顯示 [偵錯] 按鈕的 Visual Studio 專案工具列

  3. 輸入字串並按 Enter,然後再按 Enter 可試用程式。

    執行展示工具的主控台視窗

其他資源

下一步

在本教學課程中,您已建立類別庫。 在下一個教學課程中,您會了解如何為類別庫進行單元測試。

您也可以跳過自動化單元測試,並了解如何透過建立 NuGet 封裝來共用程式庫:

或了解如何發佈主控台應用程式。 如果您透過在本教學課程中建立的解決方案發佈主控台應用程式,類別庫會將其當作 .dll 檔案使用。