티스토리 뷰

반응형

Visual Studio 2019 Extension은 여러 부분(프로젝트 템플릿, 아이템 템플릿, 메뉴 확장 등등)에 대한 확장을 만들 수 있습니다. 그 중 프로젝트 템플릿 확장을 만들어 보려고 합니다. 우선 이번 포스트에서는 프로젝트 템플릿을 만들고, 사용하는 방법에 대해서 다루고 다음 포스트에서 프로젝트 템플릿 확장을 만들어 보도록 하겠습니다.

 

1. 준비

Visual Studio Installer를 이용해서 Visual Studio Extension Development workload가 선택이 되어 있는지 확인합니다.

2. 프로젝트 생성

Wpf .Net Core 5.0 프로젝트를 생성합니다.

이 프로젝트를 Mvvm 패턴을 이용하는 기본 템플릿으로 만들도록 하겠습니다.

3. 전체 소스 코드

WpfMvvm 프로젝트와 WpfMvvm.Core 프로젝트는 아래 소스 코드에서 참고하시면 됩니다.

 

NuGet packages

Microsoft.Toolkit.Mvvm v7.1.1

Microsoft.Xaml.Behaviors.Wpf v1.1.37

kaki104/WpfMvvmProjectTemplate (github.com)

 

GitHub - kaki104/WpfMvvmProjectTemplate

Contribute to kaki104/WpfMvvmProjectTemplate development by creating an account on GitHub.

github.com

4. Wpf 실행 결과

로그인 버튼을 클릭하면 로그인 완료 메시지 박스가 출력되면서 아래 화면으로 네비게이션 됩니다.

5. 프로젝트 템플릿 만들기

WpfMvvm, WpfMvvm.Core 프로젝트 각각의 프로젝트 템플릿을 생성합니다.

Project -> Export Template...을 선택합니다.

프로젝트 템플릿을 만들어야하니 Project template를 선택하고, 하단의 콤보박스를 WpfMvvm으로 변경한 후 Next를 클릭합니다.

Template name은 그대로 두고 아래 Automatically import the template into Visual Studio의 선택을 해제합니다.

이유는 2개의 프로젝트를 하나의 템플릿으로 묶어서 배포를 할 것이기 때문에 개별 템플릿이 Visual Studio Project template에 등록되는 것을 방지하는 것입니다. 

Finish 버튼을 눌러서 완료 합니다.

Export Template... 메뉴를 한번더 실행해서 콤보박스에서 WpfMvvm.Core 프로젝트를 선택하고 위의 과정을 반복합니다.

최종 결과는 아래와 같습니다.

6. 2개의 프로젝트가 포함된 프로젝트 템플릿 만들기

..\Documents\Visual Studio 2019\My Exported Templates 폴더에 WpfMvvmSolutionTemplate 폴더를 생성합니다.

그리고, WpfMvvm.zip과 WpfMvvm.Core.zip을 해당 폴더로 이동합니다.

압축파일을 풀어줍니다.

2개의 zip파일은 필요 없으니 삭제하고, WpfMvvmSolutionTemplate.vstemplate 파일을 생성합니다. 이 파일은 일반 Text 파일 생성하기를 한 후 확장자를 변경하시면 됩니다.

1) WpfMvvmSolutionTemplate.vstemplate 파일을 비주얼 스튜디오에서 아래와 같이 수정합니다.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
	<TemplateData>
		<Name>WPF Mvvm App (Toolkit.Mvvm)</Name>
		<Description>Template for creating a WPF Mvvm project</Description>
    <ProjectType>CSharp</ProjectType>
    <Icon>__TemplateIcon.png</Icon>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>WpfMvvmApp</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <LanguageTag>csharp</LanguageTag>
		<PlatformTag>windows</PlatformTag>
		<ProjectTypeTag>desktop</ProjectTypeTag>
	</TemplateData>
	<TemplateContent>
		<ProjectCollection>
			<ProjectTemplateLink ProjectName="$projectname$" CopyParameters="true">
				WpfMvvm\App.vstemplate
			</ProjectTemplateLink>
			<ProjectTemplateLink ProjectName="$projectname$.Core" CopyParameters="true">
				WpfMvvm.Core\Core.vstemplate
			</ProjectTemplateLink>
		</ProjectCollection>
	</TemplateContent>
</VSTemplate>

<ProjectType> : 필수로 프로젝트 유형을 결정합니다.

<Icon> : 프로젝트 템플릿의 아이콘을 설정합니다.

<DefaultName> : 프로젝트 템플릿을 이용할 때 생성할 기본 이름을 지정합니다.

<LanguageTag>, <PlatformTag>, <ProjectTypeTag> : 프로젝트 템플릿 하단에 출력되는 테그를 추가합니다.

<ProjectTemplateLink ProjectName="$projectname$" CopyParameters="true"> : 사용자가 입력한 프로젝트 이름을 각 프로젝트 템플릿에 전달하는 역할을 합니다. 

 

2) WpfMvvm 폴더에 있는 MyTemplate.vstemplate 파일의 이름을 App.vstemplate로 변경합니다.

3) WpfMvvm 폴더에 있는 WpfMvvm.csproj 파일을 편집합니다. (메모장이나 Visual Studio 이용)

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.2" />
    <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.1" />
    <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.37" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\$ext_projectname$.Core\$ext_projectname$.Core.csproj" />
  </ItemGroup>

</Project>

<ProjectReference Include="..\$ext_projectname$.Core\$ext_projectname$.Core.csproj" /> 이 부분이 프로젝트 이름을 받아서 사용하는 부분입니다

 

참고 : Using CustomParameter with Visual Studio Multi-Project Template - Stack Overflow

4) WpfMvvm.Core 폴더에 있는 MyTemplate.vstemplate 파일의 이름을 Core.vstemplate로 변경합니다.

5) 아이콘으로 사용할 파일을 폴더에 복사해서 이름을 변경합니다.

6) WpfMvvmSolutionTemplate 폴더 내부에 있는 WpfMvvm, WpfMvvm.Core __TemplateIcon.png, WpfMvvmSolutionTemplate.vstemplate 파일을 모두 선택한 후 WpfMvvmTemplate.zip 파일을 생성합니다.

7. Visual Studio Project Template 폴더로 압축파일을 복사합니다.

위치는 Visual Studio 2019에서 Tools -> Opteions -> Projects and Solutions -> Locations -> User project template location 을 참고하시면 됩니다.

ex) C:\Users\{User}\Documents\Visual Studio 2019\Templates\ProjectTemplates

 

8. 프로젝트 생성

kaki104라는 이름으로 프로젝트를 생성하고 실행 했습니다.

2021.10.26 - [Visual Studio] - Visual Studio 2019 Project Template Extension 만들기

반응형
댓글