추가 기능 등록

업데이트: 2007년 11월

추가 기능을 만든 후에는 먼저 Visual Studio에 이를 등록해야 추가 기능 관리자에서 활성화에 사용할 수 있습니다. 이전 버전의 Visual Studio에서는 레지스트리 키를 사용하여 이 작업을 수행했지만 이제는 XML 파일을 대신 사용합니다.

참고:

추가 기능 마법사를 사용하여 추가 기능을 만들 때 .Addin 파일이 자동으로 만들어집니다. 다음 정보는 추가 기능의 등록 파일을 직접 만들거나 편집하려는 경우에만 적용됩니다.

Visual Studio .NET 2002와 Visual Studio .NET 2003에서는 어셈블리 등록 도구(regasm.exe)를 사용하여 추가 기능 어셈블리를 Windows에 COM 구성 요소로 등록해야 했습니다. 또한 Windows 레지스트리 키를 사용하여 추가 기능을 Visual Studio에 등록해야만 추가 기능 관리자에 추가 기능이 나타났습니다.

Visual Studio 2005부터 이러한 단계가 변경되었습니다. 더 이상 regasm을 사용하여 .NET 어셈블리를 Windows에 등록하지 않아도 됩니다. 대신 파일 확장명이 .Addin인 XML 파일과 함께 어셈블리 .DLL 파일을 특정 디렉터리(이 항목의 뒷부분 참조)에 넣기만 하면 됩니다. 이 XML 파일에서는 Visual Studio가 추가 기능 관리자에 추가 기능을 표시하는 데 필요한 정보를 설명합니다. Visual Studio가 시작되면 아래에 나열된 .Addin 파일 위치에서 사용할 수 있는 모든 .Addin 파일을 찾습니다. 이 파일이 발견되면 XML 파일을 읽고 추가 기능 관리자에 추가 기능을 클릭하여 시작할 때 필요한 정보를 제공합니다.

간편해진 이 등록 방법을 사용하면 관리 코드 추가 기능을 XCopy 방식으로 설치할 수 있습니다. 올바른 위치에 모든 파일을 넣으면 추가 기능이 제대로 동작합니다. 또한 주석이 있는 XML을 사용하여 추가 기능을 위한 등록 설정을 정의하므로 레지스트리 키를 사용할 때보다 정보를 더 쉽게 이해하고 편집할 수 있습니다.

.Addin 파일

.Addin 확장명을 가진 새로운 XML 파일은 이전의 추가 기능 레지스트리 설정을 대신합니다. 추가 기능 마법사가 완료될 때 두 개의 .Addin 파일 복사본이 자동으로 만들어집니다.

.Addin 파일 위치

.DLL 파일 위치

설명

Addin 폴더

(예: \Documents and Settings\All Users\Shared Documents\Visual Studio 2008\Addins

- 또는 -

\Documents and Settings\<user name>\My Documents\Visual Studio 2008\Addins)

프로젝트 디버그 폴더

(예: \My Documents\Visual Studio Projects\MyAddin1\MyAddin1\bin)

디버깅 환경에서 추가 기능을 실행하는 데 사용됩니다. 항상 현재 빌드 구성의 출력 경로를 가리켜야 합니다.

루트 프로젝트 폴더

(예: \My Documents\Visual Studio\Projects\MyAddin1)

로컬 경로(MyAddin1.dll)

추가 기능 프로젝트의 배포에 사용됩니다. 간편한 편집을 위해 프로젝트에 포함되며 XCopy 방식의 배포를 위한 로컬 경로를 사용하여 설정됩니다.

.Addin XML 파일은 태그로 이루어진 다음과 같은 섹션으로 나뉘어 있습니다.

설정 값

설명

HostApplication

(필수 요소) 추가 기능을 로드할 수 있는 응용 프로그램의 이름과 버전 번호를 지정합니다.

Assembly

(필수 요소) 추가 기능 이진 파일의 위치를 지정합니다. 이 필드는 로컬 경로, 네트워크 경로 또는 유효한 URL로 설정할 수 있습니다.

FullClassName

(필수 요소) 추가 기능에 연결하는 데 사용되는 클래스의 이름을 지정합니다.

LoadBehavior

(선택적 요소) 추가 기능을 시작 시 로드할지 또는 수동으로 로드할지 정의합니다.

CommandPreload

(선택적 요소) 추가 기능의 미리 로드 상태를 지정합니다. 즉 추가 기능에서 Commands.AddNamedCommand 같은 메서드를 사용하여 UI(사용자 인터페이스)를 만드는지 여부를 지정합니다.

CommandLineSafe

(선택적 요소) 추가 기능이 호환되는 Visual Studio 모드(예: 명령줄 전용, IDE(통합 개발 환경) 전용 또는 둘 모두)를 지정합니다.

각 설정에 대한 세부 내용은 다음과 같습니다.

HostApplication

HostApplication의 <Name> 태그에는 응용 프로그램의 이름이 포함됩니다. 이것은 응용 프로그램의 제목 표시줄에 표시되거나 DTE.Name에서 반환되는 이름입니다. 예를 들어, 이 태그에는 Visual Studio의 경우 "Microsoft Visual Studio"가 포함되고 매크로 IDE의 경우 "Microsoft Visual Studio Macros"가 포함됩니다.

각 .Addin 파일에는 HostApplication 값이 여러 개 있을 수 있습니다. 각각의 값은 <HostApplication> 태그 내에서 <Name> 태그로 묶어야 합니다. 각 <HostApplication> 태그에는 <Name> 태그 외에도 <Version> 태그로 묶은 응용 프로그램의 버전 번호가 있어야 합니다. 예를 들면 다음과 같습니다.

   <HostApplication>
      <!-- First Host App name (required). -->
      <Name>Microsoft Visual Studio</Name>
      <Version>9.0</Version>
   </HostApplication>
   <HostApplication>
      <!-- An additional supported program/version. -->
      <Name>Microsoft Visual Studio Macros</Name>
      <Version>9.0</Version>
   </HostApplication>

또는 모든 버전의 Visual Studio를 나타내기 위해 <Version>의 값으로 별표(*)를 지정할 수도 있습니다. 이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

FriendlyName

<Addin> 태그 아래의 <FriendlyName> 태그는 추가 기능 관리자에서 추가 기능에 대해 사용 가능한 추가 기능 열에 표시될 문자열을 지정합니다. 사용 방법은 다음 예제와 같습니다.

   <FriendlyName>My New Super Addin</FriendlyName>

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

Description

<Addin> 태그 아래의 <Description> 태그는 추가 기능 관리자에서 추가 기능에 대한 설명 상자에 표시될 문자열을 지정합니다. 사용 방법은 다음 예제와 같습니다.

   <Description>This add-in will change your life!</Description>

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

AboutBoxDetails

추가 기능을 만들 때 도움말 대화 상자에 대한 설정을 생성하는 옵션을 선택하면 .Addin 파일에 이 태그가 추가됩니다. 이 태그는 추가 기능을 위해 Visual Studio의 도움말 대화 상자에 표시될 텍스트를 지정합니다. 사용 방법은 다음 예제와 같습니다.

   <AboutBoxDetails>For add-in support, call 1-800-xxx-
     xxxx.</AboutBoxDetails>

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

AboutIconData

추가 기능을 만들 때 도움말 대화 상자에 대한 설정을 생성하는 옵션을 선택하면 .Addin 파일에 이 태그가 추가됩니다. 이 태그는 추가 기능을 위해 Visual Studio의 도움말 대화 상자에 표시될 아이콘을 지정하는 이진 데이터를 포함합니다. 사용 방법은 다음 예제와 같습니다.

<AboutIconData>0000010006 . . . FFFF0000</AboutIconData>

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

Assembly

<Addin> 태그 아래의 <Assembly> 태그는 추가 기능 이진 파일의 위치를 지정합니다. 이 태그에는 로컬 경로, 네트워크 경로("file"), 등록된 어셈블리 이름("assembly") 또는 유효한 URL("url")을 설정할 수 있습니다. 이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

  • 아래에 URL 추가 기능 위치의 예가 있습니다. 이 경우 src 매개 변수는 추가 기능 DLL의 웹 기반 위치를 나타내기 위해 url로 설정되어 있습니다.

    <Assembly src="url">http://somewebsite.com/MyAddin4.dll</Assembly>
    
  • 로컬 경로 위치의 예는 다음과 같습니다. 이 경우 src 매개 변수는 추가 기능 DLL의 로컬 위치를 나타내기 위해 file로 설정되어 있습니다.

    <Assembly src="file">C:\Documents and Settings\jdoe\Application Data\Microsoft\Visual Studio\8.0\AddIns\MyAddin4.dll</Assembly>
    
  • 로컬 경로의 예는 다음과 같습니다. 이 경우 src 매개 변수는 추가 기능 DLL의 웹 기반 위치를 나타내기 위해 assembly로 설정되어 있습니다.

    <Assembly src="assembly">BookshelfDefineAddin</Assembly>
    

FullClassName

<FullClassName> 태그는 추가 기능에 연결하는 데 사용되는 클래스의 전체 이름을 해당 네임스페이스까지 포함하여 지정합니다. 사용 예제는 다음과 같습니다.

    <FullClassName>MyAddin4.Connect</FullClassName>

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

LoadBehavior

<LoadBehavior> 태그는 추가 기능을 IDE 시작 시 자동으로 로드할지 또는 직접 시작할지를 정의합니다. <LoadBehavior> 태그는 <Addin> 태그 아래에 있습니다. 사용 예제는 다음과 같습니다.

    <LoadBehavior>1</LoadBehavior>

<LoadBehavior> 태그는 선택적으로 사용할 수 있지만 이 태그를 사용하여 추가 기능이 로드되는 시기를 명시적으로 정의하는 것이 좋습니다.

설명

0

추가 기능은 IDE 시작 시 로드되지 않으며 직접 시작해야 합니다.

1

IDE 시작 시 추가 기능이 자동으로 로드됩니다.

4

명령줄에서 build 스위치를 사용하여 devenv를 시작할 때(devenv /build) 추가 기능이 로드됩니다.

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

CommandPreload

<CommandPreload> 태그는 추가 기능을 미리 로드해야 하는지 여부를 지정합니다. 미리 로드하도록 지정한 경우에는 디스크에 .Addin 파일을 저장한 후 Visual Studio가 처음으로 시작될 때 추가 기능이 로드됩니다. 사용 예제는 다음과 같습니다.

    <CommandPreload>1</CommandPreload>

이 태그를 사용하면 Visual Studio가 시작된 후 추가 기능을 로드하도록 지정할 수 있습니다. 이 기회를 통해 추가 기능은 명령 모음 단추 같은 필요한 사용자 인터페이스 요소를 만들거나, 추가 기능의 기본 설정 생성과 같은 처음 한 번만 필요한 기타 초기화 작업을 수행할 수 있습니다. 그런 다음에는 추가 기능이 즉시 언로드됩니다. 이후로 추가 기능이 만든 명령 중 하나를 사용자가 실행하면 필요에 따라 IDE의 이어진 모든 인스턴스에서 추가 기능이 로드됩니다.

설명

0

사용자가 추가 기능 관리자를 통해 추가 기능을 시작하거나 시작 시 로드하도록 설정하기 전까지 추가 기능은 로드되지 않습니다.

1

디스크에 .Addin XML 파일을 넣은 다음 Visual Studio가 처음으로 시작될 때 추가 기능이 자동으로 로드됩니다.

두 번째 인수를 OnConnection으로 지정하여 사용자가 구현하는 OnConnection 메서드를 검사함으로써 연결 형식이 ext_cm_UISetup인지 확인할 수 있습니다. 그럴 경우에는 AddNamedCommand 또는 AddControl 메서드를 사용하여 원하는 명령을 배치할 수 있습니다.

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

CommandLineSafe

선택적 요소인 <CommandLineSafe> 태그는 devenv 명령줄에서 시작 시(예: 명령줄 빌드 또는 이와 유사한 작업 수행 시) UI를 표시하지 않도록 추가 기능이 디자인되어 있는지 여부를 나타냅니다. 이렇게 하려면 추가 기능 마법사에서 추가 기능에 모달 UI를 표시하지 않으며 추가 기능을 명령줄 빌드에서 사용합니다. 옵션을 선택합니다. 또한 이 태그는 추가 기능이 호환되는 Visual Studio 모드(예: 명령줄 전용 또는 IDE 전용)를 지정합니다. 사용 예제는 다음과 같습니다.

    <CommandLineSafe>0</CommandLineSafe>

설명

0

추가 기능이 명령줄에서 사용할 때 안전하지 않고 UI를 표시할 수도 있음을 지정합니다.

1

추가 기능이 명령줄에서 사용할 때 안전하고 UI를 표시하지 않음을 지정합니다.

이 태그의 계층적 위치에 대한 자세한 내용은 이 항목의 뒷부분에 나오는 .Addin XML 파일의 예 단원을 참조하십시오.

.Addin XML 파일의 예

다음은 전체 .Addin XML 파일의 예입니다. 여기서는 앞서 언급한 태그의 계층 구조와 위치를 보여 줍니다.

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Extensibility 
  xmlns="https://schemas.microsoft.com/AutomationExtensibility">
    <HostApplication>
        <Name>Microsoft Visual Studio Macros</Name>
        <Version>9.0</Version>
    </HostApplication> 
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>9.0</Version>
    </HostApplication>
    <Addin>
        <FriendlyName>My great new add-in.</FriendlyName>
        <Description>This add-in does it all.</Description>
        <AboutBoxDetails>Copyright 2008.</AboutBoxDetails>
        <AboutIconData>0000 . . . FFFF0000</AboutIconData>
        <Assembly>MyNewAddin.dll</Assembly>
        <FullClassName>MyNewAddin.Connect</FullClassName>
        <LoadBehavior>1</LoadBehavior>
        <CommandPreload>1</CommandPreload>
        <CommandLineSafe>0</CommandLineSafe>
    </Addin>
</Extensibility>

참고 항목

작업

방법: 추가 기능 관리자를 사용하여 추가 기능 제어

방법: 추가 기능 만들기

연습: 마법사 만들기

개념

자동화 개체 모델 차트

참조

Visual Studio 명령 및 스위치

기타 리소스

추가 기능 및 마법사 만들기