사용자 지정 MVC 템플릿

작성자 : Jacques Eloff

Visual Studio 2010용 MVC 3 도구 업데이트 릴리스에는 MVC 프로젝트에 대한 별도의 프로젝트 마법사가 도입되었습니다. 이 변화는 두 가지 요인에 의해 주도되었습니다. 먼저 MVC 3에서 새 템플릿을 도입하고 Razor와 같은 추가 보기 엔진에 대한 지원을 통해 Visual Studio에서 새 프로젝트 대화 상자가 과밀화됩니다. 둘째, 고객은 확장성 지점을 요청했고 새 MVC 프로젝트 마법사를 통해 이러한 요청에 응답할 수 있습니다.

사용자 지정 템플릿을 추가하는 것은 레지스트리를 사용하여 MVC 프로젝트 마법사에 새 템플릿을 표시하는 데 의존하는 힘든 프로세스였습니다. 새 템플릿의 작성자는 설치 시 필요한 레지스트리 항목을 만들 수 있도록 MSI 내부에 래핑해야 했습니다. 대안은 템플릿이 포함된 ZIP 파일을 사용할 수 있도록 하고 최종 사용자가 필요한 레지스트리 항목을 직접 만들도록 하는 것이었습니다.

앞서 언급한 방법 중 어느 것도 이상적이지 않으므로 VISUAL Studio 2012용 MVC 4부터 사용자 지정 MVC 템플릿을 더 쉽게 작성, 배포 및 설치할 수 있도록 VSIX 확장에서 제공하는 기존 인프라 중 일부를 활용하기로 결정했습니다. 이 방법에서 제공하는 이점 중 일부는 다음과 같습니다.

  • VSIX 확장에는 다양한 언어(C# 및 Visual Basic) 및 여러 보기 엔진(ASPX 및 Razor)을 지원하는 여러 템플릿이 포함될 수 있습니다.
  • VSIX 확장은 Express SKU를 포함하여 Visual Studio의 여러 SKU를 대상으로 할 수 있습니다.
  • Visual Studio 갤러리를 사용하면 광범위한 대상에게 확장을 쉽게 배포할 수 있습니다.
  • VSIX 확장을 업그레이드하면 사용자 지정 템플릿에 대한 수정 및 업데이트를 더 쉽게 작성할 수 있습니다.

사전 요구 사항

  • 사용자는 vstemplate 파일에 필요한 태그 등을 포함하여 프로젝트 템플릿 작성에 대해 잘 알고 있어야 합니다.
  • 사용자에게 Visual Studio Professional 이상이 설치되어 있어야 합니다. Express SKU는 VSIX 프로젝트 만들기를 지원하지 않습니다.
  • Visual Studio 2012 SDK 가 설치되었습니다.

예제

첫 번째 단계는 C# 또는 Visual Basic을 사용하여 새 VSIX 프로젝트를 만드는 것입니다. 파일 > 새 프로젝트를 선택한 다음, 왼쪽 창에서 확장성을 클릭하고 VSIX 프로젝트를 선택합니다.

새 프로젝트

프로젝트가 만들어지면 VSIX 디자이너가 열립니다.

프로젝트 Designer 메타데이터

디자이너를 사용하여 확장을 설치하거나 Visual Studio에서 설치된 확장(도구 > 확장 및 업데이트)을 찾아볼 때 사용자에게 표시되는 확장의 일반 속성 중 일부를 편집할 수 있습니다. 일반 정보가 완료되면 대상 설치 탭을 클릭합니다.

스크린샷은 프로젝트 Designer 대상 설치 탭을 보여줍니다.

이 탭은 확장에서 지원하는 Visual Studio의 SKU 및 버전을 지정하는 데 사용됩니다. 모든 사용자가 VSIX의 컴퓨터별 설치를 사용하도록 설정하기 위해 이 VSIX 가 설치되어 있는지 확인란을 선택합니다. 오른쪽의 새로 만들기 단추를 클릭하여 VWD(Web Developer Express)와 같은 SKU를 추가합니다.

새 설치 대상 추가

모든 Professional 및 상위 SKU(Professional, Premium 및 Ultimate)를 지원하려는 경우 패밀리에서 최소 SKU만 선택하면 Microsoft.VisualStudio.Pro. 대상 설치를 완료한 후에는 모든 변경 내용을 저장해야 합니다.

스크린샷은 지정된 식별자 및 버전 범위가 있는 Project Designer 대상 설치 탭을 보여줍니다.

자산 탭은 VSIX에 모든 콘텐츠 파일을 추가하는 데 사용됩니다. MVC에는 사용자 지정 메타데이터가 필요하므로 자산 탭을 사용하여 콘텐츠를 추가하는 대신 VSIX 매니페스트 파일의 원시 XML을 편집합니다. 먼저 VSIX 프로젝트에 템플릿 콘텐츠를 추가합니다. 폴더의 구조와 내용이 프로젝트의 레이아웃을 미러 것이 중요합니다. 아래 예제에는 기본 MVC 프로젝트 템플릿에서 파생된 4개의 프로젝트 템플릿이 포함되어 있습니다. 프로젝트 템플릿을 구성하는 모든 파일(ProjectTemplates 폴더 아래의 모든 파일)이 VSIX 프로젝트 파일의 콘텐츠 항목 그룹에 추가되고 각 항목에 아래 예제와 같이 CopyToOutputDirectoryIncludeInVsix 메타데이터 집합이 포함되어 있는지 확인합니다.

<콘텐츠 포함="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicWeb.config">

<CopyToOutputDirectory>Always</CopyToOutputDirectory>

<IncludeInVSIX>true</IncludeInVSIX>

</콘텐츠>

그렇지 않은 경우 VSIX를 빌드할 때 IDE가 템플릿의 내용을 컴파일하려고 시도하며 오류가 표시될 수 있습니다. 템플릿의 코드 파일에는 프로젝트 템플릿이 인스턴스화되어 IDE에서 컴파일할 수 없는 경우 Visual Studio에서 사용하는 특수 템플릿 매개 변수 가 포함된 경우가 많습니다.

솔루션 탐색기

VSIX 디자이너를 닫은 다음 솔루션 탐색기 source.extension.manifest 파일을 마우스 오른쪽 단추로 클릭하고 함께 열기를 선택하고 XML(텍스트) 편집기 옵션을 선택합니다.

대화 상자로 열기

<Assets> 요소를 만들고 VSIX에 <포함되어야 하는 각 파일에 대한 Asset> 요소를 추가합니다. 각 <Asset> 요소의 Type 특성은 Microsoft.VisualStudio.Mvc.Template으로 설정해야 합니다. MVC 프로젝트 마법사만 이해하는 사용자 지정 네임스페이스입니다. 매니페스트 파일의 구조 및 레이아웃에 대한 자세한 내용은 VSIX 2.0 스키마 설명서를 참조하세요.

VSIX에 파일을 추가하는 것만으로는 MVC 마법사에 템플릿을 등록하기에 충분하지 않습니다. 템플릿 이름, 설명, 지원되는 뷰 엔진 및 프로그래밍 언어와 같은 정보를 MVC 마법사에 제공해야 합니다. 이 정보는 각 vstemplate 파일의 <Asset> 요소와 연결된 사용자 지정 특성으로 전달됩니다.

<Asset d:VsixSubPath="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx"

Type="Microsoft.VisualStudio.Mvc.Template"

d:Source="File"

Path="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicMvcWebApplicationProjectTemplate.11.csaspx.vstemplate"

ProjectType="MVC"

Language="C#"

ViewEngine="Aspx"

TemplateId="MyMvcApplication"

Title="Custom Basic Web Application"

Description="기본 MVC 웹 애플리케이션(Razor)에서 파생된 사용자 지정 템플릿"

Version="4.0"/>

다음은 있어야 하는 사용자 지정 특성에 대한 설명입니다.

  • ProjectType 을 MVC로 설정해야 합니다.
  • 언어 는 템플릿에서 지원하는 개발 언어를 지정합니다. 유효한 값은 C# 또는 VB입니다.
  • ViewEngine 은 템플릿에서 지원하는 보기 엔진(예: Aspx 또는 Razor)을 지정합니다. 이 필드에 대한 사용자 지정 값을 지정할 수 있습니다.
  • TemplateId 는 템플릿을 그룹화하기 위해 사용됩니다. 값이 기존 템플릿 ID와 일치하는 경우 이전에 MVC 마법사에 등록된 템플릿을 재정의합니다.
  • 제목 은 각 프로젝트 템플릿 아래의 MVC 마법사에 표시되는 간단한 설명을 지정합니다.
  • 설명 은 템플릿에 대한 자세한 설명을 지정합니다.

매니페스트에 모든 파일을 추가하고 저장한 후에는 디자이너의 자산 탭에 vstemplate 파일의 Asset> 요소에 추가<한 사용자 지정 특성이 아니라 모든 파일이 표시됩니다.

프로젝트 Designer 자산

이제 남은 것은 VSIX 프로젝트를 컴파일하고 설치하는 것입니다.

VSIX 확장을 테스트하려는 컴퓨터에서 Visual Studio의 모든 인스턴스가 닫혀 있는지 확인합니다. Visual Studio는 시작하는 동안 새 확장을 검색하므로 VSIX를 설치하는 동안 IDE가 열려 있는 경우 Visual Studio를 다시 시작해야 합니다. Explorer VSIX 파일을 두 번 클릭하여 VSIX 설치 관리자를 시작하고 설치를 클릭한 다음 Visual Studio를 시작합니다.

VSIX 설치 관리자

메뉴에서 도구 > 확장 및 업데이트 선택하여 확장이 설치되었는지 확인합니다. VSIX 설치 관리자가 확장을 설치하는 동안 오류를 보고한 경우 VSIX 설치 관리자 로그에서 자세한 내용을 확인할 수 있습니다. 로그는 일반적으로 확장을 설치한 사용자의 %temp% 폴더에 생성됩니다(예 : C:\Users\Bob\AppData\Local\Temp).

확장 및 업데이트

창을 닫은 후 MVC 4 프로젝트를 만들어 새 템플릿이 MVC 마법사에 표시되는지 확인할 수 있습니다.

새 ASP.NET MVC 4 프로젝트

제한 사항

  1. MVC 마법사는 지역화된 사용자 지정 템플릿을 지원하지 않습니다.
  2. 사용자 지정 템플릿을 찾지 못하면 마법사에서 오류를 보고하지 않습니다. 필요한 사용자 지정 특성이 없는 경우 템플릿은 마법사에서 제외됩니다.