추가 기능 등록
Visual Studio 추가 기능은 Visual Studio 2013에서 사용되지 않습니다. 추가 기능을 VSPackage 확장으로 업그레이드해야 합니다. 업그레이드에 대한 자세한 내용은 FAQ: VSPackage 확장으로 추가 기능 변환을 참조하십시오.
추가 기능을 만든 후에는 먼저 Visual Studio에 이를 등록해야 추가 기능 관리자에서 활성화할 수 있습니다. 이 작업은 파일 확장명이 .addin인 XML 파일을 사용하여 수행합니다.
.addin 파일에서는 Visual Studio가 추가 기능 관리자에 추가 기능을 표시하는 데 필요한 정보를 설명합니다. Visual Studio가 시작되면 .addin 파일 위치에서 사용할 수 있는 모든 .addin 파일을 찾습니다. 이 파일이 발견되면 Visual Studio에서는 XML 파일을 읽고 사용자가 추가 기능을 클릭할 때 이를 시작하는 데 필요한 정보를 추가 기능 관리자에 제공합니다.
추가 기능 마법사를 사용하여 추가 기능을 만들 때 .addin 파일이 자동으로 만들어집니다. 이 항목의 정보를 참조하여 .addin 파일을 수동으로 만들 수도 있습니다.
파일 위치
다음과 같이 추가 기능 마법사를 통해 두 개의 .addin 파일 복사본이 자동으로 만들어집니다.
.Addin 파일 위치 |
.DLL 파일 위치 |
설명 |
---|---|---|
루트 프로젝트 폴더 \Documents\Visual Studio 2013\Projects\MyAddin1\MyAddin1\ |
로컬 경로(MyAddin1.dll) |
추가 기능 프로젝트의 배포에 사용됩니다. 간편한 편집을 위해 프로젝트에 포함되며 xcopy 방식의 배포를 위한 로컬 경로가 있습니다. |
추가 기능 폴더 \Documents\Visual Studio 2013\Addins\ 또는 Shared Documents Location\Addins\ |
프로젝트 디버그 폴더 예: \Documents\Visual Studio 2013 Projects\MyAddin1\MyAddin1\bin\ |
디버깅 환경에서 추가 기능을 실행하는 데 사용됩니다. 항상 현재 빌드 구성의 출력 경로를 가리켜야 합니다. |
다른 컴퓨터에 추가 기능을 설치하려면 Visual Studio가 추가 기능을 확인하는 위치에 .addin 파일을 배치해야 합니다. 이러한 위치는 옵션 대화 상자 환경 노드 추가 기능 보안 페이지에 나와 있습니다. 자세한 내용은 추가 기능 보안을 참조하십시오.
추가 기능을 포함하는 .dll 파일은 클라이언트 컴퓨터의 어느 위치에나 설치할 수 있습니다. 그러나 이 파일은 .addin 파일과 같은 위치에 배치하는 것이 좋습니다.
참고
.addin 파일의 <Assembly> 요소는 추가 기능의 이진을 포함하는 .dll 파일을 가리켜야 합니다.
.dddin 파일
.addin XML 파일은 다음과 같은 태그가 지정된 섹션으로 분할됩니다.
단원 |
설명 |
---|---|
호스트 응용 프로그램 |
(필수) 추가 기능을 로드할 수 있는 응용 프로그램의 이름과 버전 번호를 지정합니다. |
추가 기능 |
(필수) 추가 기능을 설명하는 요소를 포함합니다. |
도구 옵션 페이지 |
(선택) 추가 기능을 구성할 수 있는 옵션 대화 상자의 페이지를 지정합니다. 자식 노드는 옵션 페이지의 범주와 하위 범주뿐만 아니라 해당 어셈블리 이름과 전체 클래스 이름도 지정합니다. |
다음 요소는 <Addin> 섹션의 자식입니다.
요소 |
설명 |
---|---|
정보 상자 정보 |
(선택) 추가 기능에 대해 Visual Studio 정보 대화 상자에 표시할 텍스트를 지정합니다. |
정보 아이콘 데이터 |
(선택) 추가 기능에 대해 Visual Studio 정보 대화 상자에 표시할 아이콘을 지정하는 이진 데이터를 포함합니다. |
정보 아이콘 위치 |
(선택) 추가 기능에 대해 Visual Studio 정보 대화 상자에 표시할 아이콘의 절대 경로 또는 상대 경로를 지정합니다. |
어셈블리 |
(필수) 추가 기능 이진 파일의 위치를 지정합니다. 이 필드는 로컬 경로, 네트워크 경로 또는 URL로 설정될 수 있습니다. |
명령줄 안전 |
(선택) 추가 기능이 호환되는 Visual Studio 모드(예: 명령줄 전용, IDE(통합 개발 환경) 전용 또는 둘 다)를 지정합니다. |
명령 미리 로드 |
(선택) 추가 기능의 미리 로드된 상태, 즉 추가 기능이 Commands.AddNamedCommand 등의 메서드를 사용하여 UI를 만들어야 하는지 여부를 지정합니다. |
전체 클래스 이름 |
(필수) 추가 기능에 연결하는 데 사용되는 클래스의 이름을 지정합니다. |
로드 동작 |
(선택) 추가 기능이 시작 시 로드되는지 수동으로 로드되는지를 정의합니다. |
아래에서는 각 설정의 세부 정보에 대해 설명합니다. 여기서 설명하는 대부분의 요소가 있는 계층적 위치에 대한 자세한 내용은 이 항목 뒷부분의 "예제 .addin XML 파일"을 참조하세요.
호스트 응용 프로그램
Host Application 섹션의 <Name> 요소는 응용 프로그램 이름을 포함합니다. 이 이름은 응용 프로그램 제목 표시줄에 표시되거나 DTE.Name에 의해 반환됩니다. 예를 들어 Visual Studio의 경우 해당 태그는 "Microsoft Visual Studio"를 포함합니다.
.addin 파일당 둘 이상의 호스트 응용 프로그램 값이 있을 수 있습니다. <HostApplication> 요소의 <Name> 태그를 사용하여 모든 값을 대괄호로 묶어야 합니다. 모든 <HostApplication> 요소는 <Name> 요소를 포함해야 할 뿐 아니라 <Version> 태그를 통해 대괄호로 묶인 응용 프로그램 버전 번호도 포함해야 합니다. 예를 들면 다음과 같습니다.
<HostApplication>
<!-- First Host App name (required). -->
<Name>Microsoft Visual Studio</Name>
<Version>12.0</Version>
</HostApplication>
<HostApplication>
<!-- An additional supported program/version. -->
<Name>Microsoft Visual Studio</Name>
<Version>11.0</Version>
</HostApplication>
또는 모든 Visual Studio 버전에 대해 <Version> 값을 나타내도록 별표(*)를 지정할 수도 있습니다.
이름
<Addin> 요소 아래에 있는 <FriendlyName> 요소는 추가 기능 관리자의 사용 가능한 추가 기능 열에 표시되는 문자열을 지정합니다. 예를 들면 다음과 같습니다.
<FriendlyName>My New Super Addin</FriendlyName>
설명
<Addin> 요소 아래에 있는 <Description> 요소는 추가 기능 관리자의 설명 상자에 표시되는 문자열을 지정합니다. 예를 들면 다음과 같습니다.
<Description>This add-in will change your life!</Description>
정보 상자 정보
추가 기능을 만들 때 정보 대화 상자에 대한 설정을 생성하는 옵션을 선택하는 경우 이 요소가 .addin 파일에 추가됩니다. 이 요소는 Visual Studio 정보 대화 상자에 표시할 텍스트를 지정합니다. 예를 들면 다음과 같습니다.
<AboutBoxDetails>For add-in support, call 1-800-xxx-
xxxx.</AboutBoxDetails>
정보 아이콘 데이터
추가 기능을 만들 때 정보 대화 상자에 대한 설정을 생성하는 옵션을 선택하는 경우 이 요소가 .addin 파일에 추가됩니다. 이 요소는 Visual Studio 정보 대화 상자에 표시할 아이콘을 지정하는 이진 데이터를 포함합니다. 예를 들면 다음과 같습니다.
<AboutIconData>0000010006 . . . FFFF0000</AboutIconData>
어셈블리
<Addin> 요소 아래에 있는 <Assembly> 요소는 추가 기능 이진 파일의 위치를 지정합니다. 이 요소는 상대 경로, 절대 경로("file"), 등록된 어셈블리 이름("assembly") 또는 URL("url")로 설정할 수 있습니다.
다음 예에서는 절대 경로 위치를 보여줍니다. 여기서 src 매개 변수는 추가 기능 DLL의 위치를 나타내는 file로 설정됩니다.
<Assembly src="file">C:\Documents and Settings\jdoe\Application Data\Microsoft\Visual Studio\12.0\AddIns\MyAddin4.dll</Assembly>
다음 예에서는 등록된 위치를 보여줍니다. 여기서 src 매개 변수는 등록된 추가 기능 DLL을 나타내는 assembly로 설정됩니다.
<Assembly src="assembly">BookshelfDefineAddin</Assembly>
다음 예에서는 URL 위치를 보여줍니다. 여기서 src 매개 변수는 추가 기능 DLL의 웹 기반 위치를 나타내는 url로 설정됩니다.
<Assembly src="url">http://somewebsite.com/MyAddin4.dll</Assembly>
전체 클래스 이름
<FullClassName> 요소는 추가 기능에 연결하는 데 사용되는 클래스의 전체 이름을 지정합니다. 여기에는 클래스가 들어 있는 네임스페이스가 포함됩니다. 예를 들면 다음과 같습니다.
<FullClassName>MyAddin4.Connect</FullClassName>
로드 동작
<LoadBehavior> 요소는 추가 기능이 IDE 시작 시 자동으로 로드되는지 수동으로 로드되는지를 정의합니다. <LoadBehavior> 요소는 <Addin> 요소 아래에 있습니다. 예를 들면 다음과 같습니다.
<LoadBehavior>1</LoadBehavior>
<LoadBehavior>는 반드시 사용할 필요는 없지만 해당 요소를 사용하여 추가 기능이 로드되는 경우를 명시적으로 정의하는 것이 좋습니다.
값 |
설명 |
---|---|
0 |
추가 기능이 IDE 시작 시 로드되지 않으며 수동으로 시작해야 합니다. |
1 |
추가 기능이 IDE 시작 시 자동으로 로드됩니다. |
4 |
빌드 스위치(devenv /build)를 사용하여 명령 프롬프트에서 devenv를 시작하면 추가 기능이 로드됩니다. |
명령 미리 로드
<CommandPreload> 요소는 추가 기능을 미리 로드해야 하는지 여부를 지정합니다. 미리 로드 시에는 .addin 파일을 설치한 후 Visual Studio를 처음 시작하면 추가 기능이 로드됩니다. 예를 들면 다음과 같습니다.
<CommandPreload>1</CommandPreload>
이 요소를 사용하면 Visual Studio를 시작한 후에 추가 기능이 반드시 로드되도록 지정할 수 있습니다. 이 경우 추가 기능이 명령 모음 단추 등의 필수 UI 요소를 만들 수 있도록 하거나, 기본 추가 기능 설정 만들기 등 처음 시작 시에만 수행되는 초기화 작업을 수행할 수 있습니다. 그리고 나면 추가 기능이 만든 명령 중 하나를 사용자가 실행할 때까지 추가 기능은 언로드된 상태로 있습니다. 그 후에는 필요에 따라 추가 기능이 로드됩니다.
값 |
설명 |
---|---|
0 |
추가 기능은 사용자가 추가 기능 관리자를 사용하여 시작하거나 시작 시 로드되도록 설정하지 않으면 로드되지 않습니다. |
1 |
.addin 파일을 설치한 후 Visual Studio를 처음 시작하면 추가 기능이 자동으로 로드됩니다. |
구현하는 OnConnection 메서드를 점검하여 OnConnection의 두 번째 인수를 통해 지정되는 연결 형식이 ext_cm_UISetup인지를 확인할 수 있습니다. 해당 연결 형식이 지정된 경우에는 AddNamedCommand 또는 AddControl 메서드를 사용하여 원하는 모든 명령 배치를 수행할 수 있습니다.
명령줄 안전
선택적 <CommandLineSafe> 요소는 명령줄 빌드 또는 기타 유사한 작업을 수행할 때와 같이 추가 기능이 명령 프롬프트에서 시작될 때 UI를 표시하지 않도록 설계되었는지를 나타냅니다. 이와 같이 설계하려면 추가 기능 마법사 **추가 기능에 모달 UI를 표시하지 않습니다.**를 선택합니다.) 또한 이 요소는 추가 기능이 호환되는 Visual Studio 모드(예: 명령줄 전용 또는 IDE 전용)를 지정합니다. 예를 들면 다음과 같습니다.
<CommandLineSafe>0</CommandLineSafe>
값 |
설명 |
---|---|
0 |
추가 기능이 명령줄 안전이 아니며 UI를 표시할 수 있음을 지정합니다. |
1 |
추가 기능이 명령줄 안전이며 UI를 표시하지 않음을 지정합니다. |
도구 옵션 페이지
선택적 <ToolsOptionsPage> 요소는 사용자가 추가 기능을 구성할 수 있도록 옵션 페이지를 지정합니다. 자식 노드는 페이지가 표시되는 범주와 하위 범주 및 옵션 페이지의 어셈블리 이름과 전체 클래스 이름을 지정합니다. 다음 예에서는 이 요소의 계층 구조를 보여줍니다.
<ToolsOptionsPage>
<Category Name="Text Editor">
<SubCategory Name="General">
<Assembly>"MyFilePath\MyAddInOptionPage.dll"</Assembly>
<FullClassName>"MyNamespace.MyAddInOptionPage"</FullClassName>
</SubCategory>
</Category>
</ToolsOptionsPage>
예제 .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</Name>
<Version>12.0</Version>
</HostApplication>
<HostApplication>
<Name>Microsoft Visual Studio</Name>
<Version>11.0</Version>
</HostApplication>
<Addin>
<FriendlyName>My great new add-in.</FriendlyName>
<Description>This add-in does it all.</Description>
<AboutBoxDetails>Copyright 2013.</AboutBoxDetails>
<AboutIconData>0000 . . . FFFF0000</AboutIconData>
<Assembly>MyNewAddin.dll</Assembly>
<FullClassName>MyNewAddin.Connect</FullClassName>
<LoadBehavior>1</LoadBehavior>
<CommandPreload>1</CommandPreload>
<CommandLineSafe>0</CommandLineSafe>
</Addin>
</Extensibility>