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