이 자습서에서는 단일 문자열 처리 메서드를 포함하는 간단한 유틸리티 라이브러리를 만듭니다.
클래스 라이브러리 애플리케이션에서 호출되는 형식과 메서드를 정의합니다. 라이브러리가 .NET Standard 2.0을 대상으로 하는 경우 .NET Standard 2.0을 지원하는 .NET 구현(.NET Framework 포함)에서 호출할 수 있습니다. 라이브러리가 .NET 10을 대상으로 하는 경우 .NET 10을 대상으로 하는 애플리케이션에서 호출할 수 있습니다. 이 자습서에서는 .NET 10을 대상으로 하는 방법을 보여줍니다.
클래스 라이브러리를 만들 때 타사 구성 요소 또는 하나 이상의 애플리케이션이 있는 번들 구성 요소로 배포할 수 있습니다.
필수 조건
Visual Studio.NET 데스크톱 개발 워크로드가 설치되어 있습니다. 이 워크로드를 선택하면 .NET SDK가 자동으로 설치됩니다.
자세한 내용은
Visual Studio 참조하세요.
- 최신 .NET SDK
- Visual Studio Code 편집기
- C# 개발 키트
설치 지침
Windows에서 이 WinGet 구성 파일을 사용하여 모든 필수 구성 요소를 설치하십시오. 이미 설치된 항목이 있는 경우 WinGet은 해당 단계를 건너뜁니다.
- 파일을 다운로드하고 두 번 클릭하여 실행합니다.
- 사용권 계약을 읽고, y입력하고, 동의하라는 메시지가 표시되면 Enter 키를 선택합니다.
- 작업 표시줄에 깜박이는 UAC(사용자 계정 컨트롤) 프롬프트가 표시되면 설치를 계속하도록 허용합니다.
다른 플랫폼에서는 이러한 각 구성 요소를 별도로 설치해야 합니다.
- .NET SDK 다운로드 페이지 권장 설치 관리자를 다운로드하고 두 번 클릭하여 실행합니다. 다운로드 페이지에서 플랫폼을 검색하고 플랫폼에 대한 최신 설치 관리자를 권장합니다.
- Visual Studio Code 홈페이지에서 최신 설치 관리자를 다운로드하고 두 번 클릭하여 실행합니다. 그 페이지는 또한 플랫폼을 탐지하며, 링크는 시스템에 맞게 정확할 것입니다.
- C# DevKit 확장 페이지에서 "설치" 단추를 클릭합니다. 그러면 Visual Studio 코드가 열리고 확장을 설치하거나 사용하도록 설정할지 묻습니다. "설치"를 선택합니다.
- GitHub Codespaces 사용할 GitHub 계정입니다. 아직 없는 경우 GitHub.com 무료 계정을 만들 수 있습니다.
솔루션 만들기
먼저 클래스 라이브러리 프로젝트를 저장할 빈 솔루션을 만듭니다. Visual Studio 솔루션은 하나 이상의 프로젝트에 대한 컨테이너 역할을 합니다. 동일한 솔루션에 관련 프로젝트를 추가합니다.
빈 솔루션을 만들려면 다음을 수행합니다.
Visual Studio 시작합니다.
시작 창에서 새 프로젝트 만들기을 선택합니다.
새 프로젝트 만들기 페이지에서 검색 상자에 솔루션 입력합니다. 비어 있는 솔루션 템플릿을 선택한 다음 다음으로 진행합니다.
새 프로젝트 구성 페이지에서 솔루션 이름 상자에 ClassLibraryProjects을 입력합니다. 그런 다음 만들기선택합니다.
먼저 "StringLibrary"라는 .NET 클래스 라이브러리 프로젝트와 연결된 솔루션을 만듭니다. 솔루션은 하나 이상의 프로젝트에 대한 컨테이너 역할을 합니다. 관련된 프로젝트를 동일한 솔루션에 추가합니다.
Visual Studio Code 시작합니다.
탐색기 보기로 이동하여 .NET 프로젝트 만들기 선택합니다. 또는 Ctrl+Shift+P(MacOS의 경우 Command+Shift+P)를 사용하여 명령 팔레트를 표시한 다음 ".NET"을 입력하고 .NET: 새 프로젝트 명령을 찾아서 선택할 수 있습니다.
프로젝트 템플릿 클래스 라이브러리를 선택합니다.
그런 다음 새 프로젝트를 만들 위치를 선택합니다. 폴더를 만들고 선택합니다.
프로젝트의 이름을 StringLibrary로 지정하십시오.
솔루션 파일 형식으로 .sln 선택합니다.
모든 템플릿 옵션 표시를 선택합니다.
다음으로 .NET 10 선택합니다. 그런 다음 프로젝트 만들기를 선택합니다.
이 폴더에 있는 파일의 작성자를 신뢰합니까? 대화 상자에서 [예]를 선택하고 작성자를 신뢰합니다. 이 폴더에는 .NET 의해 생성되고 사용자가 추가하거나 수정한 파일만 있으므로 작성자를 신뢰할 수 있습니다.
먼저 자습서 환경을 사용하여 GitHub Codespace를 만든 다음, .NET 클래스 라이브러리 프로젝트를 만듭니다.
브라우저 창을 열고 자습서 코드스페이스 리포지토리로 이동합니다.
녹색 코드 단추를 선택한 다음 , Codespaces 탭을 선택합니다.
기본 단추에서 기호 또는 녹색 코드스페이스 만들기 를 선택하여 이 환경을 사용하여 새 Codespace를 만듭니다.
자습서 리포지토리에서 새 Codespace 만들기
코드스페이스가 로드되면 터미널을 열고 자습서 폴더로 이동합니다.
cd tutorials새 클래스 라이브러리 프로젝트를 만듭니다.
dotnet new classlib -n StringLibrary
클래스 라이브러리 프로젝트 만들기
솔루션에 StringLibrary라는 새 .NET 클래스 라이브러리 프로젝트를 추가합니다.
솔루션 탐색기 솔루션을 마우스 오른쪽 단추로 클릭하고 Add>새로운 프로젝트 선택합니다.
새 프로젝트 추가 페이지에서 검색 상자에 라이브러리를 입력합니다. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음 플랫폼 목록에서 플랫폼 선택합니다. 클래스 라이브러리 템플릿을 선택한 다음 다음선택합니다.
새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 StringLibrary 입력한 다음, 다음선택합니다.
기능 정보 페이지에서 .NET 10을 선택한 다음, Create 선택합니다.
라이브러리가 올바른 버전의 .NET 대상으로 지정하는지 확인합니다. 솔루션 탐색기 라이브러리 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 Properties 선택합니다. Target Framework 텍스트 상자에는 프로젝트가 .NET 10.0을 대상으로 한다고 표시됩니다.
Visual Basic을 사용하는 경우 Default 네임스페이스 텍스트 상자에서 텍스트를 지웁니다.
클래스 라이브러리의 프로젝트 속성
각 프로젝트에 대해 Visual Basic 프로젝트 이름에 해당하는 네임스페이스를 자동으로 만듭니다. 이 자습서에서는 코드 파일의 키워드를 사용하여 최상위 네임스페이스를 정의합니다.
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클래스 라이브러리에는 메서드가 포함되어 있습니다. 이 메서드는 현재 문자열 인스턴스가 대문자로 시작하는지 여부를 나타내는 값을 반환합니다. 유니코드 표준은 대문자를 소문자에서 구분합니다. 메서드는 문자가 대문자이면 반환합니다.
클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. C# 코드에서 후 물음표()는 문자열이 null일 수 있음을 나타냅니다. 메뉴 모음에서 빌드빌드 솔루션을 선택하거나 CtrlShiftB를 눌러 프로젝트가 오류 없이 컴파일되는지 확인합니다.
프로젝트가 만들어지고 Class1.cs 열립니다.
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]); } }클래스 라이브러리에는 메서드가 포함되어 있습니다. 이 메서드는 현재 문자열 인스턴스가 대문자로 시작하는지 여부를 나타내는 값을 반환합니다. 유니코드 표준은 대문자를 소문자에서 구분합니다. 메서드는 문자가 대문자이면 반환합니다.
클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. 파일을 저장합니다.
솔루션 탐색기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
StringLibrary 폴더로 이동합니다.
cd StringLibraryClass1.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]); } }클래스 라이브러리에는 메서드가 포함되어 있습니다. 이 메서드는 현재 문자열 인스턴스가 대문자로 시작하는지 여부를 나타내는 값을 반환합니다. 유니코드 표준은 대문자를 소문자에서 구분합니다. 메서드는 문자가 대문자이면 반환합니다.
클래스의 멤버인 것처럼 호출할 수 있도록 확장 메서드로 구현됩니다. 파일을 저장하고 프로젝트를 빌드합니다.
dotnet build빌드는 오류 없이 성공해야 합니다.
솔루션에 콘솔 앱 추가
클래스 라이브러리를 사용하는 콘솔 애플리케이션을 추가합니다. 앱은 사용자에게 문자열을 입력하라는 메시지를 표시하고 문자열이 대문자로 시작하는지 여부를 보고합니다.
ShowCase라는 새 .NET 콘솔 애플리케이션을 솔루션에 추가합니다.
솔루션 탐색기 솔루션을 마우스 오른쪽 단추로 클릭하고 Add>새로운 프로젝트 선택합니다.
새 프로젝트 추가 페이지에서 검색 상자에 콘솔 입력하세요. 언어 목록에서 C# 또는 Visual Basic을 선택한 다음 플랫폼 목록에서 플랫폼 선택합니다.
콘솔 앱 템플릿을 선택한 다음, 다음을 선택합니다.
새 프로젝트 구성 페이지에서 프로젝트 이름 상자에 ShowCase를 입력합니다. 다음을 선택합니다.
사용 정보 페이지의 프레임워크> 상자에서 .NET 10을 선택합니다. 그런 다음 만들기선택합니다.
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이 코드는 변수를 사용하여 콘솔 창에 기록된 데이터 행 수의 수를 유지 관리합니다. 25보다 크거나 같을 때마다 코드는 콘솔 창을 지우고 사용자에게 메시지를 표시합니다.
프로그램에서 사용자에게 문자열을 입력하라는 메시지를 표시합니다. 문자열이 대문자로 시작하는지 여부를 나타냅니다. 사용자가 문자열을 입력하지 않고 Enter 키를 누르면 애플리케이션이 종료되고 콘솔 창이 닫힙니다.
솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭하고 새 프로젝트를 선택하거나 명령 팔레트에서 .NET: 새 프로젝트 선택합니다.
콘솔 앱을 선택합니다.
이름을 ShowCase로 지정하고, 기본 디렉터리를 선택하고, 프로젝트 만들기를 선택합니다.
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; }이 코드는 변수를 사용하여 콘솔 창에 기록된 데이터 행 수의 수를 유지 관리합니다. 25보다 크거나 같을 때마다 코드는 콘솔 창을 지우고 사용자에게 메시지를 표시합니다.
프로그램에서 사용자에게 문자열을 입력하라는 메시지를 표시합니다. 문자열이 대문자로 시작하는지 여부를 나타냅니다. 사용자가 문자열을 입력하지 않고 Enter 키를 누르면 애플리케이션이 종료되고 콘솔 창이 닫힙니다.
변경 내용을 저장합니다.
자습서 폴더로 돌아가서 새 콘솔 앱을 만듭니다.
cd .. dotnet new console -n ShowCaseShowCase/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; }이 코드는 변수를 사용하여 콘솔 창에 기록된 데이터 행 수의 수를 유지 관리합니다. 25보다 크거나 같을 때마다 코드는 콘솔 창을 지우고 사용자에게 메시지를 표시합니다.
프로그램에서 사용자에게 문자열을 입력하라는 메시지를 표시합니다. 문자열이 대문자로 시작하는지 여부를 나타냅니다. 사용자가 문자열을 입력하지 않고 Enter 키를 누르면 애플리케이션이 종료되고 콘솔 창이 닫힙니다.
변경 내용을 저장합니다.
프로젝트 참조 추가
처음에는 새 콘솔 앱 프로젝트에서 클래스 라이브러리에 액세스할 수 없습니다. 클래스 라이브러리에서 메서드를 호출할 수 있도록 하려면 클래스 라이브러리 프로젝트에 대한 프로젝트 참조를 만듭니다.
솔루션 탐색기
ShowCase프로젝트의 구성 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 참조 추가를 선택합니다.
참조 관리자 대화 상자에서 StringLibrary 프로젝트를 선택하고 확인을 선택합니다.
StringLibrary가 선택된 참조 관리자 대화 상자
솔루션 탐색기ShowCase 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 참조 추가를 선택합니다.
StringLibrary를 선택합니다.
팁 (조언)
또는 ShowCase.csproj에 다음을 추가합니다.
<ItemGroup>
<ProjectReference Include="..\StringLibrary\StringLibrary.csproj" />
</ItemGroup>
ShowCase 프로젝트에서 StringLibrary 프로젝트에 대한 참조를 추가합니다.
cd ShowCase
dotnet add reference ../StringLibrary/StringLibrary.csproj
앱 실행
솔루션 탐색기ShowCase 프로젝트를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 시작 프로젝트로 설정 선택합니다.
Visual Studio 프로젝트의 상황에 맞는 메뉴에서 시작 프로젝트를 설정합니다 CtrlF5 눌러 디버깅하지 않고 프로그램을 컴파일하고 실행합니다.
문자열을 입력한 후 Enter키를 누르고, 프로그램을 종료하려면 Enter 키를 누르세요.
ShowCase가 실행 중인 콘솔 창
맨 위 메뉴 모음을 사용하여 실행디버깅하지 않고 실행을 선택합니다.
C#선택합니다.
C#: ShowCase를 선택합니다.
C# 프로그램이 로드되지 않는다는 오류가 발생하면 열려 있는 폴더를 닫고 폴더를 엽니다. 그런 다음, 앱을 다시 실행해 봅니다.
문자열을 입력한 후 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
ShowCase 앱을 실행합니다.
dotnet run문자열을 입력한 후 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로 이동합니다. 창에 코드스페이스 목록이 표시됩니다. 학습 자습서 코드스페이스에 대한 항목에서 세 개의 점()을 선택합니다. 그런 다음, "삭제"를 선택합니다.
다음 단계:
이 자습서에서는 클래스 라이브러리를 만들었습니다. 다음 자습서에서는 클래스 라이브러리를 단위 테스트하는 방법을 알아봅니다.
또는 자동화된 단위 테스트를 건너뛰고 NuGet 패키지를 만들어 라이브러리를 공유하는 방법을 알아볼 수 있습니다.
또는 콘솔 앱을 게시하는 방법을 알아봅니다. 이 자습서에서 만든 솔루션을 사용하여 콘솔 앱을 게시하면, 클래스 라이브러리가 .dll 파일로 함께 포함됩니다.
.NET