자습서: Visual Studio를 사용하여 .NET 클래스 라이브러리 만들기

이 자습서에서는 단일 문자열 처리 메서드를 포함하는 간단한 클래스 라이브러리를 만듭니다.

클래스 라이브러리는 애플리케이션에서 호출되는 형식 및 메서드를 정의합니다. 라이브러리가 .NET Standard 2.0을 대상으로 하는 경우 .NET Standard 2.0을 지원하는 .NET 구현(.NET Framework 포함)에서 호출될 수 있습니다. 라이브러리가 .NET 8을 대상으로 하는 경우 .NET 8을 대상으로 하는 모든 애플리케이션에서 호출될 수 있습니다. 이 자습서에서는 .NET 8을 대상으로 지정하는 방법을 보여 줍니다.

클래스 라이브러리를 만들 때 NuGet 패키지 또는 라이브러리를 사용하는 애플리케이션이 포함된 번들 구성 요소로 배포할 수 있습니다.

필수 조건

솔루션 만들기

먼저 클래스 라이브러리 프로젝트를 배치할 빈 솔루션을 만듭니다. Visual Studio 솔루션은 하나 이상의 프로젝트에 대한 컨테이너로 작동합니다. 동일한 솔루션에 관련 프로젝트를 추가합니다.

빈 솔루션을 만들려면 다음을 수행합니다.

  1. Visual Studio를 시작합니다.

  2. 시작 창에서 새 프로젝트 만들기를 선택합니다.

  3. 새 프로젝트 만들기 페이지의 검색 상자에 solution을 입력합니다. 빈 솔루션 템플릿을 선택한 후, 다음을 선택합니다.

    Blank solution template in Visual Studio

  4. 새 프로젝트 구성 페이지에서 솔루션 이름 상자에 ClassLibraryProjects를 입력합니다. 그런 다음, 만들기를 선택합니다.

클래스 라이브러리 프로젝트 만들기

  1. “StringLibrary”라는 새로운 .NET 클래스 라이브러리 프로젝트를 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 library를 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다. 클래스 라이브러리 템플릿을 선택한 후 다음을 선택합니다.

    3. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 StringLibrary를 입력한 후 다음을 선택합니다.

    4. 추가 정보 페이지에서 .NET 8(미리 보기)을 선택한 후 만들기를 선택합니다.

  2. 라이브러리에 올바른 버전의 .NET이 대상으로 지정되었는지 확인합니다. 솔루션 탐색기에서 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭한 다음, 속성을 선택합니다. 대상 프레임워크 텍스트 상자에 프로젝트가 .NET 7.0을 대상으로 한다는 것이 표시됩니다.

  3. Visual Basic을 사용하는 경우 루트 네임스페이스 텍스트 상자의 텍스트를 지웁니다.

    Project properties for the class library

    각 프로젝트에 대해 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 값을 반환합니다. 유니코드 표준은 대문자와 소문자를 구분합니다. Char.IsUpper(Char) 메서드는 문자가 대문자인 경우 true를 반환합니다.

    StartsWithUpperString 클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. C# 코드에서 string 뒤의 물음표(?)는 문자열이 null일 수 있음을 나타냅니다.

  5. 메뉴 모음에서 빌드>솔루션 빌드를 선택하거나 Ctrl+Shift+B를 눌러 프로젝트가 오류 없이 컴파일되는지 확인합니다.

솔루션에 콘솔 앱 추가

클래스 라이브러리를 사용하는 콘솔 애플리케이션을 추가합니다. 이 앱은 사용자에게 문자열을 입력하라는 메시지를 표시하고 문자열이 대문자로 시작하는지 여부를 보고합니다.

  1. “ShowCase”라는 새 .NET 콘솔 애플리케이션을 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 console을 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다.

    3. 콘솔 애플리케이션 템플릿을 선택한 후 다음을 선택합니다.

    4. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 ShowCase를 입력합니다. 다음을 선택합니다.

    5. 추가 정보 페이지의 프레임워크 상자에서 .NET8(미리 보기)을 선택합니다. 그런 다음, 만들기를 선택합니다.

  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 프로젝트의 종속성 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 참조 추가를 선택합니다.

    Add reference context menu in Visual Studio

  2. 참조 관리자 대화 상자에서 StringLibrary 프로젝트를 선택하고 확인을 선택합니다.

    Reference Manager dialog with StringLibrary selected

앱 실행

  1. 솔루션 탐색기에서 ShowCase 프로젝트를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 시작 프로젝트로 설정을 선택합니다.

    Visual Studio project context menu to set startup project

  2. Ctrl+F5를 눌러 디버깅 없이 프로그램을 컴파일하고 실행합니다.

  3. 문자열을 입력하고 Enter 키를 눌러 프로그램을 사용해 본 다음 Enter 키를 눌러 끝냅니다.

    Console window with ShowCase running

추가 리소스

다음 단계

이 자습서에서는 클래스 라이브러리를 만들었습니다. 다음 자습서에서는 클래스 라이브러리의 유닛 테스트를 실행하는 방법을 알아봅니다.

또는 자동화된 유닛 테스트를 건너뛰고 NuGet 패키지를 만들어서 라이브러리를 공유하는 방법을 알아볼 수도 있습니다.

또는 콘솔 앱을 게시하는 방법을 알아보세요. 이 자습서에서 만든 솔루션에서 콘솔 앱을 게시하는 경우 클래스 라이브러리는 .dll 파일로 함께 포함됩니다.

이 자습서에서는 단일 문자열 처리 메서드를 포함하는 간단한 클래스 라이브러리를 만듭니다.

클래스 라이브러리는 애플리케이션에서 호출되는 형식 및 메서드를 정의합니다. 라이브러리가 .NET Standard 2.0을 대상으로 하는 경우 .NET Standard 2.0을 지원하는 .NET 구현(.NET Framework 포함)에서 호출될 수 있습니다. 라이브러리가 .NET 7을 대상으로 하는 경우 .NET 7을 대상으로 하는 모든 애플리케이션에서 라이브러리를 호출할 수 있습니다. 이 자습서에서는 .NET 7을 대상으로 지정하는 방법을 보여줍니다.

클래스 라이브러리를 만들 때 NuGet 패키지 또는 라이브러리를 사용하는 애플리케이션이 포함된 번들 구성 요소로 배포할 수 있습니다.

필수 조건

솔루션 만들기

먼저 클래스 라이브러리 프로젝트를 배치할 빈 솔루션을 만듭니다. Visual Studio 솔루션은 하나 이상의 프로젝트에 대한 컨테이너로 작동합니다. 동일한 솔루션에 관련 프로젝트를 추가합니다.

빈 솔루션을 만들려면 다음을 수행합니다.

  1. Visual Studio를 시작합니다.

  2. 시작 창에서 새 프로젝트 만들기를 선택합니다.

  3. 새 프로젝트 만들기 페이지의 검색 상자에 solution을 입력합니다. 빈 솔루션 템플릿을 선택한 후, 다음을 선택합니다.

    Blank solution template in Visual Studio

  4. 새 프로젝트 구성 페이지에서 솔루션 이름 상자에 ClassLibraryProjects를 입력합니다. 그런 다음, 만들기를 선택합니다.

클래스 라이브러리 프로젝트 만들기

  1. “StringLibrary”라는 새로운 .NET 클래스 라이브러리 프로젝트를 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 library를 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다. 클래스 라이브러리 템플릿을 선택한 후 다음을 선택합니다.

    3. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 StringLibrary를 입력한 후 다음을 선택합니다.

    4. 추가 정보 페이지에서 .NET 7(표준 지원)을 선택한 다음 만들기를 선택합니다.

  2. 라이브러리에 올바른 버전의 .NET이 대상으로 지정되었는지 확인합니다. 솔루션 탐색기에서 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭한 다음, 속성을 선택합니다. 대상 프레임워크 텍스트 상자에 프로젝트가 .NET 7.0을 대상으로 한다는 것이 표시됩니다.

  3. Visual Basic을 사용하는 경우 루트 네임스페이스 텍스트 상자의 텍스트를 지웁니다.

    Project properties for the class library

    각 프로젝트에 대해 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 값을 반환합니다. 유니코드 표준은 대문자와 소문자를 구분합니다. Char.IsUpper(Char) 메서드는 문자가 대문자인 경우 true를 반환합니다.

    StartsWithUpperString 클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. C# 코드에서 string 뒤의 물음표(?)는 문자열이 null일 수 있음을 나타냅니다.

  5. 메뉴 모음에서 빌드>솔루션 빌드를 선택하거나 Ctrl+Shift+B를 눌러 프로젝트가 오류 없이 컴파일되는지 확인합니다.

솔루션에 콘솔 앱 추가

클래스 라이브러리를 사용하는 콘솔 애플리케이션을 추가합니다. 이 앱은 사용자에게 문자열을 입력하라는 메시지를 표시하고 문자열이 대문자로 시작하는지 여부를 보고합니다.

  1. “ShowCase”라는 새 .NET 콘솔 애플리케이션을 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 console을 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다.

    3. 콘솔 애플리케이션 템플릿을 선택한 후 다음을 선택합니다.

    4. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 ShowCase를 입력합니다. 다음을 선택합니다.

    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 프로젝트의 종속성 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 참조 추가를 선택합니다.

    Add reference context menu in Visual Studio

  2. 참조 관리자 대화 상자에서 StringLibrary 프로젝트를 선택하고 확인을 선택합니다.

    Reference Manager dialog with StringLibrary selected

앱 실행

  1. 솔루션 탐색기에서 ShowCase 프로젝트를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 시작 프로젝트로 설정을 선택합니다.

    Visual Studio project context menu to set startup project

  2. Ctrl+F5를 눌러 디버깅 없이 프로그램을 컴파일하고 실행합니다.

  3. 문자열을 입력하고 Enter 키를 눌러 프로그램을 사용해 본 다음 Enter 키를 눌러 끝냅니다.

    Console window with ShowCase running

추가 리소스

다음 단계

이 자습서에서는 클래스 라이브러리를 만들었습니다. 다음 자습서에서는 클래스 라이브러리의 유닛 테스트를 실행하는 방법을 알아봅니다.

또는 자동화된 유닛 테스트를 건너뛰고 NuGet 패키지를 만들어서 라이브러리를 공유하는 방법을 알아볼 수도 있습니다.

또는 콘솔 앱을 게시하는 방법을 알아보세요. 이 자습서에서 만든 솔루션에서 콘솔 앱을 게시하는 경우 클래스 라이브러리는 .dll 파일로 함께 포함됩니다.

이 자습서에서는 단일 문자열 처리 메서드를 포함하는 간단한 클래스 라이브러리를 만듭니다.

클래스 라이브러리는 애플리케이션에서 호출되는 형식 및 메서드를 정의합니다. 라이브러리가 .NET Standard 2.0을 대상으로 하는 경우 .NET Standard 2.0을 지원하는 .NET 구현(.NET Framework 포함)에서 호출될 수 있습니다. 라이브러리가 .NET 6을 대상으로 하는 경우 .NET 6을 대상으로 하는 모든 애플리케이션에서 호출될 수 있습니다. 이 자습서에서는 .NET 6을 대상으로 지정하는 방법을 보여 줍니다.

클래스 라이브러리를 만들 때 NuGet 패키지 또는 라이브러리를 사용하는 애플리케이션이 포함된 번들 구성 요소로 배포할 수 있습니다.

필수 조건

솔루션 만들기

먼저 클래스 라이브러리 프로젝트를 배치할 빈 솔루션을 만듭니다. Visual Studio 솔루션은 하나 이상의 프로젝트에 대한 컨테이너로 작동합니다. 동일한 솔루션에 관련 프로젝트를 추가합니다.

빈 솔루션을 만들려면 다음을 수행합니다.

  1. Visual Studio를 시작합니다.

  2. 시작 창에서 새 프로젝트 만들기를 선택합니다.

  3. 새 프로젝트 만들기 페이지의 검색 상자에 solution을 입력합니다. 빈 솔루션 템플릿을 선택한 후, 다음을 선택합니다.

    Blank solution template in Visual Studio

  4. 새 프로젝트 구성 페이지에서 솔루션 이름 상자에 ClassLibraryProjects를 입력합니다. 그런 다음, 만들기를 선택합니다.

클래스 라이브러리 프로젝트 만들기

  1. “StringLibrary”라는 새로운 .NET 클래스 라이브러리 프로젝트를 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 library를 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다. 클래스 라이브러리 템플릿을 선택한 후 다음을 선택합니다.

    3. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 StringLibrary를 입력한 후 다음을 선택합니다.

    4. 추가 정보 페이지에서 .NET 6(장기 지원)을 선택한 후 만들기를 선택합니다.

  2. 라이브러리에 올바른 버전의 .NET이 대상으로 지정되었는지 확인합니다. 솔루션 탐색기에서 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭한 다음, 속성을 선택합니다. 대상 프레임워크 텍스트 상자에 프로젝트가 .NET 6.0을 대상으로 한다는 것이 표시됩니다.

  3. Visual Basic을 사용하는 경우 루트 네임스페이스 텍스트 상자의 텍스트를 지웁니다.

    Project properties for the class library

    각 프로젝트에 대해 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 값을 반환합니다. 유니코드 표준은 대문자와 소문자를 구분합니다. Char.IsUpper(Char) 메서드는 문자가 대문자인 경우 true를 반환합니다.

    StartsWithUpperString 클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. C# 코드에서 string 뒤의 물음표(?)는 문자열이 null일 수 있음을 나타냅니다.

  5. 메뉴 모음에서 빌드>솔루션 빌드를 선택하거나 Ctrl+Shift+B를 눌러 프로젝트가 오류 없이 컴파일되는지 확인합니다.

솔루션에 콘솔 앱 추가

클래스 라이브러리를 사용하는 콘솔 애플리케이션을 추가합니다. 이 앱은 사용자에게 문자열을 입력하라는 메시지를 표시하고 문자열이 대문자로 시작하는지 여부를 보고합니다.

  1. “ShowCase”라는 새 .NET 콘솔 애플리케이션을 솔루션에 추가합니다.

    1. 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다.

    2. 새 프로젝트 추가 페이지의 검색 상자에 console을 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음, 플랫폼 목록에서 모든 플랫폼을 선택합니다.

    3. 콘솔 애플리케이션 템플릿을 선택한 후 다음을 선택합니다.

    4. 새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 ShowCase를 입력합니다. 다음을 선택합니다.

    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 프로젝트의 종속성 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 참조 추가를 선택합니다.

    Add reference context menu in Visual Studio

  2. 참조 관리자 대화 상자에서 StringLibrary 프로젝트를 선택하고 확인을 선택합니다.

    Reference Manager dialog with StringLibrary selected

앱 실행

  1. 솔루션 탐색기에서 ShowCase 프로젝트를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 시작 프로젝트로 설정을 선택합니다.

    Visual Studio project context menu to set startup project

  2. Ctrl+F5를 눌러 디버깅 없이 프로그램을 컴파일하고 실행합니다.

  3. 문자열을 입력하고 Enter 키를 눌러 프로그램을 사용해 본 다음 Enter 키를 눌러 끝냅니다.

    Console window with ShowCase running

추가 리소스

다음 단계

이 자습서에서는 클래스 라이브러리를 만들었습니다. 다음 자습서에서는 클래스 라이브러리의 유닛 테스트를 실행하는 방법을 알아봅니다.

또는 자동화된 유닛 테스트를 건너뛰고 NuGet 패키지를 만들어서 라이브러리를 공유하는 방법을 알아볼 수도 있습니다.

또는 콘솔 앱을 게시하는 방법을 알아보세요. 이 자습서에서 만든 솔루션에서 콘솔 앱을 게시하는 경우 클래스 라이브러리는 .dll 파일로 함께 포함됩니다.