次の方法で共有


チュートリアル: Visual Studio を使用して .NET クラス ライブラリを作成する

このチュートリアルでは、1 つの文字列処理メソッドを含む単純なクラス ライブラリを作成します。

クラス ライブラリ は、アプリケーションによって呼び出される型とメソッドを定義します。 ライブラリが .NET Standard 2.0 を対象とする場合は、.NET Standard 2.0 をサポートする任意の .NET 実装 (.NET Framework を含む) によって呼び出すことができます。 ライブラリが .NET 8 を対象とする場合は、.NET 8 を対象とする任意のアプリケーションから呼び出すことができます。 このチュートリアルでは、.NET 8 をターゲットにする方法について説明します。

クラス ライブラリを作成するときに、NuGet パッケージとして、またはそれを使用するアプリケーションにバンドルされたコンポーネントとして配布できます。

前提 条件

  • .NET デスクトップ開発ワークロードがインストールされた Visual Studio 2022。 このワークロードを選択すると、.NET 8 SDK が自動的にインストールされます。

    詳細については、「Visual Studioを使用した .NET SDK のインストール」を参照してください。

ソリューションを作成する

まず、クラス ライブラリ プロジェクトを配置する空のソリューションを作成します。 Visual Studio ソリューションは、1 つ以上のプロジェクトのコンテナーとして機能します。 関連するプロジェクトを同じソリューションに追加します。

空のソリューションを作成するには:

  1. Visual Studio を起動します。

  2. スタート ウィンドウで、[新しいプロジェクト作成] を選択します。

  3. [新しいプロジェクト の作成] ページで、検索ボックス ソリューション を入力します。 空白のソリューション テンプレートを選択し、次に [次へ]を選択します。

    Visual Studio で空のソリューション テンプレートを する

  4. [新しいプロジェクト の構成] ページで、[ソリューション名] ボックスに「ClassLibraryProjects」と入力します。 次に、を選択して、を作成します。

クラス ライブラリ プロジェクトを作成する

  1. "StringLibrary" という名前の新しい .NET クラス ライブラリ プロジェクトをソリューションに追加します。

    1. ソリューション エクスプローラーの でソリューション を右クリックし、[追加] を選択し、[新しいプロジェクト] を選択します。

    2. [新しいプロジェクト の追加] ページで、検索ボックス ライブラリ を入力します。 [言語] の一覧から [C# または Visual Basic を し、[プラットフォーム] の一覧から [すべてのプラットフォーム を ] を選択します。 [クラス ライブラリ] テンプレートを選んでから、[次へ] を選択します。

    3. [新しいプロジェクト の構成] ページで、[プロジェクト名] ボックスに 「StringLibrary」 を入力し、[次へ]を選択します。

    4. [追加情報] ページで、[.NET 8] を選択し、次に、[作成] を選択します。

  2. ライブラリが正しいバージョンの .NET を対象としていることを確認します。 ソリューション エクスプローラーのでライブラリ プロジェクト 右クリックし、[プロパティ]選択します。 Target Framework テキスト ボックスには、プロジェクトが .NET 8.0 を対象としていることを示します。

  3. Visual Basic を使用している場合は、ルート名前空間 テキスト ボックスのテキストをクリアします。

    クラス ライブラリ のプロジェクトプロパティを に設定する

    プロジェクトごとに、プロジェクト名に対応する名前空間が Visual Basic によって自動的に作成されます。 このチュートリアルでは、コード ファイルで namespace キーワードを使用して、最上位レベルの名前空間を定義します。

  4. Class1.cs または Class1.vb のコード ウィンドウのコードを次のコードに置き換え、ファイルを保存します。 使用する言語が表示されない場合は、ページの上部にある言語セレクターを変更します。

    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);
            }
        }
    }
    
    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 を返します。

    は、 クラスのメンバーであるかのように呼び出すことができるように、 拡張メソッドとして実装されます。 C# コードで string した後の疑問符 (?) は、文字列が null である可能性があることを示します。

  5. メニュー バーで、[ビルド>] の [ビルド ソリューション] を選択するか、Ctrl+Shift+B キーを押して、プロジェクトがエラーなくコンパイルされることを確認します。

ソリューションにコンソール アプリを追加する

クラス ライブラリを使用するコンソール アプリケーションを追加します。 アプリはユーザーに文字列の入力を求め、文字列が大文字で始まるかどうかを報告します。

  1. "ShowCase" という名前の新しい .NET コンソール アプリケーションをソリューションに追加します。

    1. ソリューション エクスプローラーの でソリューション 右クリックし、[新しいプロジェクト追加] 選択します。

    2. [新しいプロジェクト の追加] ページで、検索ボックスに コンソール を入力します。 [言語] の一覧から [C# または Visual Basic を し、[プラットフォーム] の一覧から [すべてのプラットフォーム を ] を選択します。

    3. コンソール アプリケーション テンプレートを選択し、[次へ]選択します。

    4. [新しいプロジェクトの構成] ページで、[プロジェクト名] ボックスに「ShowCase」と入力します。 次 を選択します。

    5. [追加情報] ページの [フレームワーク] ボックスの [.NET 8] を選択します。 次に、 [作成] を選択します。

  2. Program.cs または Program.vb ファイルのコード ウィンドウで、すべてのコードを次のコードに置き換えます。

    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;
            }
        }
    }
    
    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. ソリューション エクスプローラーで、 プロジェクトの [依存関係] ノードを右クリックし、[プロジェクト参照の追加]選択します。

    Visual Studio で参照コンテキスト メニューを追加する

  2. [参照マネージャー] ダイアログ ボックスで、[StringLibrary] プロジェクトを選び、[OK] を選びます。

    [参照マネージャー] ダイアログで StringLibrary が選択された

アプリを実行する

  1. ソリューション エクスプローラーで、ShowCase プロジェクトを右クリックし、コンテキスト メニューの [スタートアップ プロジェクトとして設定] 選択します。

    Visual Studio プロジェクトのコンテキスト メニューを使用して を起動プロジェクトとして設定するための

  2. CtrlF5 押して、デバッグなしでプログラムをコンパイルして実行します。

  3. 文字列を入力してEnterキーを押すとプログラムを試すことができ、終了するにはEnterキーを押します。

    ShowCase が実行されているコンソール ウィンドウ

その他のリソース

次の手順

このチュートリアルでは、クラス ライブラリを作成しました。 次のチュートリアルでは、クラス ライブラリを単体テストする方法について説明します。

Visual Studio を使用して .NET クラス ライブラリを単体テストする

または、自動単体テストをスキップし、NuGet パッケージを作成してライブラリを共有する方法を学習することもできます。

Visual Studio を使用してパッケージを作成して発行する

または、コンソール アプリを発行する方法について説明します。 このチュートリアルで作成したソリューションからコンソール アプリを発行すると、クラス ライブラリは .dll ファイルとして使用されます。

Visual Studio を使用して .NET コンソール アプリケーションを発行する