연습: 마법사 만들기
Visual Studio 2013에서는 추가 기능이 사용되지 않습니다. 추가 기능을 VSPackage 확장으로 업그레이드하는 것이 좋습니다. 업그레이드 방법에 대한 자세한 내용은 FAQ: VSPackage 확장으로 추가 기능 변환을 참조하십시오.
추가 기능 마법사 같은 마법사는 사용자가 복잡하거나 반복적이거나 어려운 작업을 수행할 수 있도록 일련의 과정을 안내하는 프로그램입니다. 예를 들어, Windows에서는 네트워크 리소스에 대한 연결, 프린터 연결 등에 마법사를 사용합니다.
Visual Studio에서 마법사는 일반적으로 사용자에게 입력을 요청하는 일련의 질문을 제시한 다음 그 결과를 사용하여 코드를 생성합니다. 그러나 마법사에 항상 UI(사용자 인터페이스)가 표시되는 것은 아닙니다. 마법사를 어떻게 프로그래밍하는가에 따라 코드 생성 과정이 화면에 표시되지 않을 수도 있습니다.
마법사에는 다음과 같은 세 종류가 있습니다.
새 프로젝트 마법사 - 이름에서 알 수 있듯이 이러한 마법사는 특정 형식의 프로젝트에 대한 새 코드를 생성하는 데 사용됩니다. 사용자는 이 마법사에서 생성된 코드를 기반으로 자신만의 코드를 추가할 수 있습니다. 이는 가장 일반적으로 사용되는 형식의 마법사입니다.
새 항목 추가 마법사 - 이러한 마법사는 Web Forms, 텍스트 파일, HTML 페이지, XML 페이지 등과 같은 새 항목을 프로젝트에 추가하는 데 사용됩니다.
사용자 지정 마법사 - 이러한 마법사는 대화 상자에서 호출되지 않습니다. 대신 이러한 마법사는 추가 기능, 매크로 또는 기타 형식의 코드를 통해 직접 호출됩니다. 이 마법사는 UI를 표시하거나 표시하지 않을 수 있습니다. 어떠한 경우이건 이 마법사는 코드를 생성합니다. 이 형식의 마법사는 자주 사용되지는 않습니다.
마법사의 종류에 관계없이 모든 마법사에는 공통적인 특성이 있습니다.
마법사는 IDTWizard 인터페이스를 구현하고 관련 메서드인 Execute를 포함하는 .NET 개체입니다. 이 메서드에는 마법사로 실행하려는 코드가 포함됩니다.
모든 마법사는 Visual Studio에서 .vsz 파일을 사용하여 표시됩니다.
모든 마법사는 코드를 생성하거나 다른 작업을 수행합니다.
만들려는 마법사의 요소 모양을 사용자 지정할 수 있습니다. 마법사는 대개 하나 이상의 창 또는 페이지로 구성됩니다. 페이지에는 페이지의 위쪽 또는 왼쪽에 있는 설명적인 이미지, 레이블 설명, 지시 사항을 비롯하여 다음 및 이전과 같은 탐색 컨트롤이 위치할 수 있는 영역이 포함됩니다.
Visual C++에서 마법사를 만드는 과정은 표준 Visual Studio 마법사를 만드는 과정과 약간 다릅니다. Visual C++를 대상으로 하는 마법사를 만드는 방법에 대한 자세한 내용은 마법사 디자인 및 사용자 지정 마법사 만들기를 참조하십시오.
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다.설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다.자세한 내용은 Visual Studio에서 개발 설정 사용자 지정을 참조하십시오.
기본 마법사 예제
이 그림에서는 추가 기능을 만들기 위한 일련의 단계를 안내하는 새 프로젝트 형식의 마법사인 추가 기능 마법사의 패널을 보여 줍니다. 마법사의 모양을 사용자 지정할 수도 있지만 표준 형식의 마법사 스타일에 대한 좋은 예로서 추가 기능 마법사를 참조하는 것이 좋습니다. 완성된 마법사는 새 프로젝트 또는 새 항목 추가 대화 상자에서 템플릿으로 사용할 수 있습니다.
다음 절차에서는 기본 마법사를 만들고 선택적으로 마법사에 사용자 지정 아이콘을 지정하는 방법을 보여 줍니다.
Visual Basic 및 Visual C#에서 기본 마법사를 만들려면
관리자 권한으로 Visual Studio을 실행합니다. 마법사를 등록하려면 레지스트리를 업데이트해야 하므로, 이 권한이 필요합니다.
MyNewWizard라는 새 클래스 라이브러리 프로젝트를 만듭니다.
EnvDTE 및 EnvDTE80에 대한 참조를 프로젝트에 추가합니다.
이렇게 하려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가와 참조를 클릭합니다. 참조 대화 상자의 .NET 탭에서 EnvDTE 및 EnvDTE80을 클릭한 다음 확인을 클릭합니다.
클래스 모듈에서 EnvDTE 및 EnvDTE80에 대한 참조를 포함하고 IDTWizard 인터페이스를 구현합니다. 이 Visual C# 예제의 경우에는 System.Windows.Forms 및 System.Runtime.InteropServices에 대한 참조도 추가해야 합니다.
Imports EnvDTE
Imports EnvDTE80
Public Class Class1
Implements IDTWizard
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;
using EnvDTE80;
using System. Windows.Forms;
using System.Runtime.InteropServices;
namespace MyNewWizard
{
[ComVisible(true)]
[Guid("20184B81-7C38-4E02-A1E3-8D564EEC2D25"),
ProgId("MyNewWizard.Class1")]
public class Class1 : IDTWizard
{
}
}
Visual Basic에 Implements 문을 추가하면 커서가 줄 끝에 놓이고 Enter 키를 누르면 Execute 메서드 프로시저가 자동으로 만들어집니다. 그러나 Visual C#의 경우 Execute 프로시저를 수동으로 추가해야 합니다.
public class Class1 : IDTWizard
{
public void Execute(object Application,
int hwndOwner, ref object[] contextParams,
ref object[] customParams,
ref EnvDTE.wizardResult retval)
마법사가 실행할 코드를 Execute 프로시저에 추가합니다. 이 예제에서는 간단한 메시지 상자만 추가합니다.
다음과 같은 요소를 사용합니다.
Imports EnvDTE Imports EnvDTE80 Public Class Class1 Implements IDTWizard Public Sub Execute(ByVal Application As Object, ByVal _ hwndOwner As Integer, ByRef ContextParams() As Object, ByRef _ CustomParams() As Object, ByRef retval As EnvDTE.wizardResult) _ Implements EnvDTE.IDTWizard.Execute MsgBox("The wizard is now running.") End Sub End Class
using System.Text; using EnvDTE; using EnvDTE80; using System.Windows.Forms; using System.Runtime.InteropServices; namespace MyNewWizardCS { public class Class1 : IDTWizard { public void Execute(object Application, int hwndOwner, ref object[] contextParams, ref object[] customParams, ref EnvDTE.wizardResult retval) { MessageBox.Show("The wizard is now running."); } } }
Execute 프로시저는 마법사를 시작할 때 호출됩니다.
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 클릭하여 프로젝트 속성 페이지를 열고, 빌드 탭을 클릭한 다음 페이지의 아래쪽에 있는 COM interop 등록 확인란을 선택합니다.
AssemblyInfo.cs 파일에서 ComVisible 특성을 찾아서 true로 설정합니다.
빌드 메뉴에서 솔루션 빌드를 클릭하여 클래스 라이브러리 .dll을 만드는 프로젝트를 빌드합니다.
마법사에 대한 .vsz 파일을 만들고 이름을 MyNewWizard.vsz로 지정합니다.
이렇게 하려면 <Visual Studio Install Directory>\VC#\CSharpProjectItems\Windows Forms에 있는 파일처럼 기존 .vsz 파일의 복사본을 만들고 이름을 "MyNewWizard.vsz"로 바꿉니다.
.vsz 파일은 Visual Studio가 마법사를 인식하고 이를 새 프로젝트 또는 새 항목 추가 대화 상자에 표시하는 데 필요한 텍스트 파일입니다. Wizard 매개 변수는 GUID 또는 프로젝트의 progID(Project.Classname)로 설정해야 합니다. 자세한 내용은 마법사를 시작하도록 .Vsz 파일 구성을 참조하십시오.
참고
선택에 따라서는 마법사의 VSDir 파일을 만들 수도 있습니다.여기에는 새 프로젝트 또는 새 파일 대화 상자에서 마법사에 대한 설명으로 표시되는 정보가 포함됩니다.이 파일을 사용하면 아이콘을 지정하고 목록에서 아이콘의 위치를 정렬할 수 있습니다.자세한 내용은 .Vsdir 파일을 사용하여 항목 추가 및 새 프로젝트 대화 상자에 마법사 추가을 참조하십시오.
MyNewWizard.vsz의 내용을 다음으로 바꿉니다.
VSWizard 7.0 Wizard=MyNewWizard.Class1 Param=First Item Param=Second Item
마법사를 표시하려는 디렉터리에 새 .vsz 파일을 저장합니다.
이 예제에서는 마법사를 Visual Basic 프로젝트에 대한 새 항목 추가 대화 상자에 표시할 계획이므로 .vsz 파일을 <Visual Studio Install Directory>\VB\VBProjectItems 디렉터리에 저장합니다.
Visual Studio를 종료했다가 다시 시작합니다.
이렇게 하면 Visual Studio에서 새 .vsz 파일을 읽습니다.
Windows 응용 프로그램 프로젝트 같은 새 Visual Basic 프로젝트를 만듭니다.
프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.
새 항목 추가 대화 상자에 새 마법사(MyNewWizard)가 표시됩니다.
마법사를 클릭하고 추가 단추를 클릭합니다.
"The wizard is now running."이라는 메시지가 나타납니다.
새 마법사에 대한 사용자 지정 아이콘을 표시하려면
.dll 파일과 기본 파일 이름은 동일하지만 확장명이 .ico인 아이콘 파일을 마법사 파일과 동일한 디렉터리에 넣습니다.
예를 들어, 마법사 이름이 MyNewWizard.dll일 경우 .ico 파일의 이름은 MyNewWizard.ico입니다.
또는
VSDir 파일을 만든 경우 이 파일에서 아이콘 파일(.ico)의 경로를 지정합니다.
참고 항목
작업
참조
개념
.Vsdir 파일을 사용하여 항목 추가 및 새 프로젝트 대화 상자에 마법사 추가