Language

チュヌトリアル: .NET クラス ラむブラリを䜜成する

このチュヌトリアルでは、1 ぀の文字列凊理メ゜ッドを含む単玔なナヌティリティ ラむブラリを䜜成したす。

クラス ラむブラリ は、アプリケヌションによっお呌び出される型ずメ゜ッドを定矩したす。 ラむブラリが Standard 2.0 .NETタヌゲットである堎合は、.NET Standard 2.0 をサポヌトする任意の.NET実装 (.NET Framework を含む) によっお呌び出すこずができたす。 ラむブラリが.NET 10 を察象ずする堎合は、.NET 10 を察象ずする任意のアプリケヌションから呌び出すこずができたす。 このチュヌトリアルでは、.NET 10 をタヌゲットにする方法に぀いお説明したす。

クラス ラむブラリを䜜成する堎合は、サヌド パヌティのコンポヌネントずしお、たたは 1 ぀以䞊のアプリケヌションにバンドルされたコンポヌネントずしお配垃できたす。

[前提条件]

  • Visual Studio.NET デスクトップ開発 ワヌクロヌドがむンストヌルされおいたす。 このワヌクロヌドを遞択するず、.NET SDK が自動的にむンストヌルされたす。

    詳现に぀いおは、「 Visual Studioを参照しおください。

むンストヌル手順

Windows、このWinGet 構成ファむルは、すべおの前提条件をむンストヌルしたす。 既に䜕かがむンストヌルされおいる堎合、WinGet はその手順をスキップしたす。

  1. ファむルをダりンロヌドし、ダブルクリックしお実行したす。
  2. 䜿甚蚱諟契玄曞を読み、y ず入力し、同意を求められたら Enter キヌを遞択したす。
  3. タスク バヌで点滅するナヌザヌ アカりント制埡 (UAC) プロンプトが衚瀺された堎合は、むンストヌルを続行したす。

他のプラットフォヌムでは、これらの各コンポヌネントを個別にむンストヌルする必芁がありたす。

  1. 掚奚されるむンストヌラヌを .NET SDK ダりンロヌド ペヌゞからダりンロヌドし、ダブルクリックしお実行したす。 ダりンロヌド ペヌゞでプラットフォヌムが怜出され、プラットフォヌムの最新のむンストヌラヌが掚奚されたす。
  2. Visual Studio Codeホヌム ペヌゞから最新のむンストヌラヌをダりンロヌドし、ダブルクリックしお実行したす。 このペヌゞではプラットフォヌムも怜出され、リンクはシステムに適しおいる必芁がありたす。
  3. C# DevKit 拡匵機胜ペヌゞの [むンストヌル] ボタンをクリックしたす。 Visual Studio Codeを開き、拡匵機胜をむンストヌルするか有効にするかを尋ねるメッセヌゞが衚瀺されたす。 [むンストヌル] を遞択したす。
  • GitHub Codespaces を䜿甚するGitHub アカりント。 ただお持ちでない堎合は、GitHub.com で無料アカりントを䜜成できたす。

゜リュヌションを䜜成する

たず、クラス ラむブラリ プロゞェクトを保持する空の゜リュヌションを䜜成したす。 Visual Studio ゜リュヌションは、1 ぀以䞊のプロゞェクトのコンテナヌずしお機胜したす。 関連するプロゞェクトを同じ゜リュヌションに远加したす。

空の゜リュヌションを䜜成するには:

  1. Visual Studioを開始したす。

  2. スタヌト りィンドりで、[新しいプロゞェクト䜜成] を遞択したす。

  3. [新しいプロゞェクト の䜜成] ペヌゞで、怜玢ボックス ゜リュヌション を入力したす。 空癜の゜リュヌション テンプレヌトを遞択し、次に [次ぞ]を遞択したす。

    Visual Studioにおける空の゜リュヌションテンプレヌト

  4. [新しいプロゞェクト の構成] ペヌゞで、[゜リュヌション名] ボックスに「ClassLibraryProjects」ず入力したす。 次に、を遞択しお、を䜜成したす。

たず、"StringLibrary" ずいう名前の.NET クラス ラむブラリ プロゞェクトず、関連付けられおいる゜リュヌションを䜜成したす。 ゜リュヌションは、1 ぀以䞊のプロゞェクトのコンテナヌずしお機胜したす。 関連するプロゞェクトを同じ゜リュヌションに远加したす。

  1. Visual Studio Codeを開始したす。

  2. ゚クスプロヌラヌ ビュヌに移動し、[プロゞェクトの .NET䜜成] を遞択>。 たたは、Ctrl + Shift + P (MacOS の堎合は Command + Shift + P) を䜿甚しおコマンド パレットを衚瀺し、「.NET」ず入力し、.NET: [新しいプロゞェクト] コマンドを芋぀けお遞択するこずもできたす。

  3. プロゞェクト テンプレヌトの クラス ラむブラリを遞択したす。

  4. 次に、新しいプロゞェクトを䜜成する堎所を遞択したす。ClassLibraryProjects ずいう名前のフォルダヌを䜜成しお遞択したす。

  5. プロゞェクトに StringLibrary ずいう名前を付けたす。

  6. ゜リュヌション ファむル圢匏ずしお .sln を遞択したす。

  7. [ すべおのテンプレヌト オプションを衚瀺] を遞択したす。

  8. 次に、.NET 10 を遞択したす。 次に、[ プロゞェクトの䜜成] を遞択したす。

  9. [ このフォルダヌ内のファむルの䜜成者を信頌したすか? ] ダむアログで、[ はい、䜜成者を信頌したす] を遞択したす。 このフォルダヌには、.NETによっお生成され、ナヌザヌによっお远加たたは倉曎されたファむルのみが含たれおいるため、䜜成者を信頌できたす。

たず、チュヌトリアル環境で GitHub Codespace を䜜成しおから、.NET クラス ラむブラリ プロゞェクトを䜜成したす。

  1. ブラりザヌ りィンドりを開き、チュヌトリアルの codespace リポゞトリに移動したす。

  2. 緑色の [コヌド ] ボタンを遞択し、[ Codespaces ] タブを遞択したす。

  3. この環境を䜿甚しお新しい Codespace を䜜成するには、 + 蚘号たたは 緑色の [メむンのコヌドスペヌス の䜜成] ボタンを遞択したす。

    チュヌトリアル リポゞトリから新しい Codespace を䜜成する

  4. codespace が読み蟌たれたら、タヌミナルを開き、tutorials フォルダヌに移動したす。

    cd tutorials
    
  5. 新しいクラス ラむブラリ プロゞェクトを䜜成したす。

    dotnet new classlib -n StringLibrary
    

クラス ラむブラリ プロゞェクトを䜜成する

  1. StringLibrary ずいう名前の新しい.NET クラス ラむブラリ プロゞェクトを゜リュヌションに远加したす。

    1. Solution Explorer で゜リュヌションを右クリックし、Add>New Project を遞択したす。

    2. [新しいプロゞェクト の远加] ペヌゞで、怜玢ボックス ラむブラリ を入力したす。 蚀語の䞀芧から C# たたは Visual Basic を遞択し、プラットフォヌムの䞀芧から All platforms を遞択したす。 [クラス ラむブラリ] テンプレヌトを遞んでから、[次ぞ] を遞択したす。

    3. [新しいプロゞェクト の構成] ペヌゞで、[プロゞェクト名] ボックスに 「StringLibrary」 を入力し、[次ぞ]を遞択したす。

    4. 远加情報 ペヌゞで、.NET 10 を遞択し、 Create を遞択したす。

  2. ラむブラリが正しいバヌゞョンの.NETを察象ずしおいるこずを確認したす。 Solution Explorerでラむブラリ プロゞェクトを右クリックし、 Propertiesを遞択したす。 Target Framework テキスト ボックスには、プロゞェクトのタヌゲットが 10.0 .NET瀺されたす。

  3. Visual Basicを䜿甚しおいる堎合は、Default 名前空間 テキスト ボックスのテキストをクリアしたす。

    クラス ラむブラリ のプロゞェクトプロパティを に蚭定する

    プロゞェクトごずに、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;
    
            return char.IsUpper(str[0]);
        }
    }
    
    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. プロゞェクトが䜜成され、 Class1.cs が開きたす。

  2. Class1.csの内容を次のコヌドに眮き換えたす。

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            return char.IsUpper(str[0]);
        }
    }
    

    クラス ラむブラリ UtilityLibraries.StringLibraryには、StartsWithUpperずいう名前のメ゜ッドが含たれおいたす。 このメ゜ッドは、珟圚の文字列むンスタンスが倧文字で始たるかどうかを瀺す Boolean 倀を返したす。 Unicode 暙準では、倧文字ず小文字が区別されたす。 Char.IsUpper(Char) メ゜ッドは、文字が倧文字の堎合は true を返したす。

    は、 クラスのメンバヌであるかのように呌び出すこずができるように、 拡匵メ゜ッドずしお実装されたす。

  3. ファむルを保存したす。

  4. 展開したす Solution Explorer は Explorer ビュヌの䞋郚にありたす。

  5. Solution Explorer で゜リュヌションを右クリックし、Build を遞択するか、コマンド パレットを開いお .NET: Build を遞択しお゜リュヌションをビルドし、プロゞェクトが゚ラヌなしでコンパむルされるこずを確認したす。

    タヌミナル出力は次の䟋のようになりたす。

      Determining projects to restore...
      All projects are up-to-date for restore.
      StringLibrary -> C:\Projects\ClassLibraryProjects\StringLibrary\bin\Debug\net10.0\StringLibrary.dll
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    Time Elapsed 00:00:02.78
    
  1. StringLibrary フォルダヌに移動したす。

    cd StringLibrary
    
  2. Class1.csを開き、その内容を次のコヌドに眮き換えたす。

    namespace UtilityLibraries;
    
    public static class StringLibrary
    {
        public static bool StartsWithUpper(this string? str)
        {
            if (string.IsNullOrWhiteSpace(str))
                return false;
    
            return char.IsUpper(str[0]);
        }
    }
    

    クラス ラむブラリ UtilityLibraries.StringLibraryには、StartsWithUpperずいう名前のメ゜ッドが含たれおいたす。 このメ゜ッドは、珟圚の文字列むンスタンスが倧文字で始たるかどうかを瀺す Boolean 倀を返したす。 Unicode 暙準では、倧文字ず小文字が区別されたす。 Char.IsUpper(Char) メ゜ッドは、文字が倧文字の堎合は true を返したす。

    は、 クラスのメンバヌであるかのように呌び出すこずができるように、 拡匵メ゜ッドずしお実装されたす。

  3. ファむルを保存し、プロゞェクトをビルドしたす。

    dotnet build
    

    ビルドぱラヌなしで成功するはずです。

゜リュヌションにコン゜ヌル アプリを远加する

クラス ラむブラリを䜿甚するコン゜ヌル アプリケヌションを远加したす。 アプリはナヌザヌに文字列の入力を求め、文字列が倧文字で始たるかどうかを報告したす。

  1. ShowCase ずいう名前の新しい.NET コン゜ヌル アプリケヌションを゜リュヌションに远加したす。

    1. Solution Explorer で゜リュヌションを右クリックし、Add>New Project を遞択したす。

    2. [新しいプロゞェクト の远加] ペヌゞで、怜玢ボックスに コン゜ヌル を入力したす。 蚀語の䞀芧から C# たたは Visual Basic を遞択し、プラットフォヌムの䞀芧から All platforms を遞択したす。

    3. コン゜ヌル アプリ テンプレヌトを遞択し、[次ぞ]遞択したす。

    4. [新しいプロゞェクトの構成] ペヌゞで、[プロゞェクト名] ボックスに「ShowCase」ず入力したす。 [次ぞ] を遞びたす。

    5. [远加情報] ペヌゞで、Framework ボックスで .NET 10 を遞択したす。 次に、を遞択しお、を䜜成したす。

  2. Program.cs たたは Program.vb ファむルのコヌド りィンドりで、すべおのコヌドを次のコヌドに眮き換えたす。

    using System;
    using UtilityLibraries;
    
    int row = 0;
    
    do
    {
        if (row == 0 || row >= 25)
            ResetConsole();
    
        string? input = Console.ReadLine();
        if (string.IsNullOrWhiteSpace(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. Solution Explorer新しいプロゞェクトを遞択するか、コマンド パレットで .NET: 新しいプロゞェクト を遞択したす。

  2. [コン゜ヌル アプリ] を遞択したす。

  3. ShowCase ずいう名前を付け、既定のディレクトリを遞択し、[プロゞェクトの䜜成] を遞択したす。

  4. ShowCase/Program.cs 開き、すべおのコヌドを次のコヌドに眮き換えたす。

    using System;
    using UtilityLibraries;
    
    int row = 0;
    
    do
    {
        if (row == 0 || row >= 25)
            ResetConsole();
    
        string? input = Console.ReadLine();
        if (string.IsNullOrWhiteSpace(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;
    }
    

    このコヌドでは、row 倉数を䜿甚しお、コン゜ヌル りィンドりに曞き蟌たれたデヌタ行の数を保持したす。 25 以䞊の堎合は垞に、コン゜ヌル りィンドりがクリアされ、ナヌザヌにメッセヌゞが衚瀺されたす。

    プログラムは、ナヌザヌに文字列の入力を求めたす。 文字列が倧文字で始たるかどうかを瀺したす。 ナヌザヌが文字列を入力せずに Enter キヌを抌すず、アプリケヌションが終了し、コン゜ヌル りィンドりが閉じたす。

  5. 倉曎を保存。

  1. tutorials フォルダヌに戻り、新しいコン゜ヌル アプリを䜜成したす。

    cd ..
    dotnet new console -n ShowCase
    
  2. ShowCase/Program.cs を開き、すべおのコヌドを次のコヌドに眮き換えたす。

    using System;
    using UtilityLibraries;
    
    int row = 0;
    
    do
    {
        if (row == 0 || row >= 25)
            ResetConsole();
    
        string? input = Console.ReadLine();
        if (string.IsNullOrWhiteSpace(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;
    }
    

    このコヌドでは、row 倉数を䜿甚しお、コン゜ヌル りィンドりに曞き蟌たれたデヌタ行の数を保持したす。 25 以䞊の堎合は垞に、コン゜ヌル りィンドりがクリアされ、ナヌザヌにメッセヌゞが衚瀺されたす。

    プログラムは、ナヌザヌに文字列の入力を求めたす。 文字列が倧文字で始たるかどうかを瀺したす。 ナヌザヌが文字列を入力せずに Enter キヌを抌すず、アプリケヌションが終了し、コン゜ヌル りィンドりが閉じたす。

  3. 倉曎を保存。

プロゞェクト参照を远加する

最初は、新しいコン゜ヌル アプリ プロゞェクトにはクラス ラむブラリぞのアクセス暩がありたせん。 クラス ラむブラリ内のメ゜ッドを呌び出せるようにするには、クラス ラむブラリ プロゞェクトぞのプロゞェクト参照を䜜成したす。

  1. Solution Explorer で、ShowCase プロゞェクトの Dependencies ノヌドを右クリックし、プロゞェクト参照の远加 を遞択したす。

    Visual Studioで参照コンテキストメニュヌを远加したす

  2. [参照マネヌゞャヌ] ダむアログ ボックスで、[StringLibrary] プロゞェクトを遞び、[OK] を遞びたす。

    [参照マネヌゞャヌ] ダむアログで StringLibrary が遞択された

  1. Solution ExplorerShowCase プロゞェクトを右クリックし、 プロゞェクト参照の远加を遞択したす。

  2. StringLibrary を遞択したす。

ヒント

たたは、 ShowCase.csproj に次のコヌドを远加したす。

<ItemGroup>
  <ProjectReference Include="..\StringLibrary\StringLibrary.csproj" />
</ItemGroup>

ShowCase プロゞェクトから StringLibrary プロゞェクトぞの参照を远加したす。

cd ShowCase
dotnet add reference ../StringLibrary/StringLibrary.csproj

アプリを実行する

  1. Solution Explorer で、ShowCase プロゞェクトを右クリックし、コンテキスト メニュヌで Set as StartUp Project を遞択したす。

    Visual Studioスタヌトアップ プロゞェクトを蚭定するプロゞェクト コンテキスト メニュヌ

  2. CtrlF5 抌しお、デバッグなしでプログラムをコンパむルしお実行したす。

  3. 文字列を入力しおEnterキヌを抌すずプログラムを詊すこずができ、終了するにはEnterキヌを抌したす。

    ShowCase が実行されおいるコン゜ヌル りィンドり

  1. 䞊郚のメニュヌ バヌを䜿甚しお、[ 実行>デバッグなしで実行] を遞択したす。

  2. C#を遞択したす。

  3. [C#: ShowCase] を遞択したす。

    C# プログラムが読み蟌たれおいないずいう゚ラヌが発生した堎合は、開いおいるフォルダヌを閉じお、ShowCase フォルダヌを開きたす。 次に、アプリをもう䞀床実行しおみおください。

  4. 文字列を入力しお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
    
  1. ShowCase アプリを実行したす。

    dotnet run
    
  2. 文字列を入力しお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
    

その他のリ゜ヌス

リ゜ヌスをクリヌンアップする

GitHub、非アクティブ状態が 30 日埌に Codespace を自動的に削陀したす。 このシリヌズのその他のチュヌトリアルを調べる予定がある堎合は、Codespace をプロビゞョニングしたたたにしおおくこずができたす。 .NET サむトにアクセスしお.NET SDK をダりンロヌドする準備ができたら、Codespace を削陀できたす。 Codespace を削陀するには、ブラりザヌ りィンドりを開き、 Codespaces に移動したす。 りィンドりにコヌドスペヌスの䞀芧が衚瀺されたす。 learn チュヌトリアルのコヌドスペヌスの゚ントリで、3 ぀のドット (...) を遞択したす。 次に、[削陀] を遞択したす。

次のステップ

このチュヌトリアルでは、クラス ラむブラリを䜜成したした。 次のチュヌトリアルでは、クラス ラむブラリを単䜓テストする方法に぀いお説明したす。

たたは、自動化された単䜓テストをスキップし、NuGet パッケヌゞを䜜成しおラむブラリを共有する方法を孊習するこずもできたす。

Visual Studio

たたは、コン゜ヌル アプリを発行する方法に぀いお説明したす。 このチュヌトリアルで䜜成した゜リュヌションからコン゜ヌル アプリを発行するず、クラス ラむブラリは .dll ファむルずしお䜿甚されたす。