Razor 클래스 라이브러리를 패키징하기
- 3분
종종 수행해야 하는 작업은 다른 개발자가 다시 사용할 수 있도록 라이브러리를 패키징하는 것입니다. NuGet 패키징을 사용하면 어디서나 모든 개발자가 애플리케이션에 대한 모든 .NET 참조를 획득하고 적절하게 구성할 수 있습니다.
이전 단원에서는 모달 대화 상자 구성 요소를 빌드하고 사용자 고유의 애플리케이션에서 사용했습니다. 이제 다른 애플리케이션에서 다시 사용하려고 합니다.
이 단원에서는 Razor 클래스 라이브러리를 NuGet 패키지로 구성하는 데 필요한 단계를 알아봅니다. 또한 NuGet.org 또는 GitHub 리포지토리와 같은 패키지 리포지토리 서비스를 사용하여 배포를 위해 라이브러리를 패키지하는 방법을 알아봅니다.
NuGet 패키징을 위한 Razor 클래스 라이브러리 구성
.NET 에코시스템을 사용하면 다른 개발자가 구성 요소를 식별하고 사용하는 데 필요한 속성을 쉽게 정의할 수 있습니다. Razor 클래스 라이브러리의 프로젝트 파일(*.csproj)에서 이러한 속성을 모두 정의하여 라이브러리와 함께 이동할 수 있습니다. 그런 다음 라이브러리가 업데이트되면 속성이 적절하게 업데이트됩니다.
Visual Studio 프로젝트 속성 - 패키지 대화 상자에서 패키지를 식별하는 필드를 구성하거나 *.csproj 파일에서 직접 항목을 만들 수 있습니다.
패키지를 만드는 데 필요한 4개의 필드는 다음과 같습니다.
| 분야 | 설명 | 기본값 |
|---|---|---|
| 패키지 ID | 전체 NuGet 리포지토리에서 고유한 패키지 식별자입니다. | 라이브러리의 AssemblyName |
| 버전 | Major.Minor.Patch[-Suffix] 형식의 특정 버전 번호입니다. 여기서 -Suffix는 선택적으로 시험판 버전을 정의합니다. | 1.0.0 |
| 작성자 | 패키지 작성자입니다. | AssemblyName |
| 회사 | 패키지를 만들고 게시할 책임이 있는 회사의 이름입니다. | AssemblyName |
이러한 필드 중 일부는 기본값을 가지며 회사 이름이 MyFirstLibrary인 패키지를 게시하는 것이 재미있어 보일 수 있습니다. 이러한 값을 명시적으로 정의하는 것이 좋습니다.
이전 단원에서는 Razor 클래스 라이브러리의 정적 콘텐츠를 _content/[PACKAGE_ID]/에서 사용할 수 있다는 것을 배웠고, 이제 PackageId 값이 어떻게 구성되는지 확인할 수 있습니다.
이러한 값이 구성된 샘플 프로젝트 파일은 다음 예제와 같을 수 있습니다.
<PropertyGroup>
<PackageId>Learn.MyFirstLibrary</PackageId>
<Version>0.1.0-alpha1</Version>
<Authors>Susan Developer, Terry Programmer</Authors>
<Company>AdventureWorks</Company>
</PropertyGroup>
프로젝트를 빌드할 때 Visual Studio 프로젝트 속성 대화 상자에서 빌드 시 NuGet 패키지를 생성하는 옵션을 선택하거나 다음과 같이 다른 패키지 필드 옆에 항목을 추가하여 GeneratePackageOnBuild NuGet 패키지를 생성하도록 구성할 수도 있습니다.
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
다음을 포함하여 많은 선택적 프로젝트 속성을 구성할 수 있습니다.
- NuGet 리포지토리에 표시하는 데 적합한
Description - 저작권 고지
- 라이선싱 정보
- 아이콘
- 프로젝트 URL
속성의 전체 목록은 MSBuild 팩 대상에 대한 Microsoft 설명서를 확인하세요.
라이브러리 패키지
*.csproj 파일에 라이브러리 구성을 작성한 후 Visual Studio에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 Pack 명령을 선택하거나 프로젝트 폴더에서 다음 명령을 실행하여 NuGet 패키지를 생성할 수 있습니다.
dotnet pack
이 dotnet pack 명령은 PackageID 및 버전 번호를 사용하여 패키지를 생성하고 표준 프로젝트 빌드 출력 폴더에 배치합니다.