방법: 솔루션 추가 기능 만들기
업데이트: 2007년 11월
추가 기능 마법사를 사용하여 추가 기능을 만들면 이 추가 기능이 IDE(통합 개발 환경)에 자동으로 연결됩니다. IDE를 시작할 때 추가 환경을 로드할 수 있고 이를 언로드하거나 IDE를 종료하기 전까지 계속 실행할 수 있습니다. 또는 추가 기능을 솔루션에 연결하여 솔루션 추가 기능으로 만들 수도 있습니다. 솔루션 추가 기능은 시스템 리소스의 낭비를 최소화하려는 경우 또는 시스템 종속성으로 인해 특정 솔루션에서만 추가 기능을 로드하려는 경우에 유용합니다. Visual Studio에서 솔루션을 로드할 때는 먼저 솔루션 파일(.sln)을 조사하여 이 파일이 추가 기능을 참조하고 있는지 확인합니다. 솔루션 파일이 추가 기능을 참조하고 있으면 해당 추가 기능을 로드하고 일반적인 Visual Studio 추가 기능의 경우와 마찬가지로 IDTExtensibility2 메서드를 호출합니다.
추가 기능 마법사에서는 현재 추가 기능이 솔루션 추가 기능인지 여부를 지정할 수 없습니다. 그러나 약간의 수정 작업만 거치면 추가 기능을 솔루션 추가 기능으로 만들 수 있습니다. 일반적인 추가 기능의 정보는 .Addin XML 파일에 저장되고 관리되지 않는 COM 추가 기능의 정보는 레지스트리에 저장되는 반면, 솔루션 추가 기능의 정보는 솔루션의 .SLN 파일에 저장됩니다.
참고: |
---|
솔루션 추가 기능은 일반적인 COM 기반 등록을 통해 등록해야 합니다. Visual Studio 2005 추가 기능에는 새로운 XML 등록(.AddIn 파일)이 사용되므로 Windows 레지스트리에 등록되도록 이를 설정해야 합니다. 다음 절차에서는 이를 수행하는 방법을 보여 줍니다. |
참고: |
---|
표시되는 대화 상자와 메뉴 명령은 실제 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다. 이러한 절차는 일반 개발 설정을 사용하여 개발되었습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오. |
솔루션 추가 기능 만들기
다음 절차에서는 솔루션 추가 기능을 만드는 방법을 보여 줍니다.
솔루션 추가 기능을 만들려면
추가 기능 마법사를 사용하여 새 추가 기능 프로젝트를 만듭니다. 적절한 언어를 선택하고 다른 기본 설정을 모두 그대로 적용합니다.
마우스 오른쪽 단추로 프로젝트를 클릭하고 속성을 선택합니다.
빌드 탭을 클릭하고 COM Interop 등록 상자를 선택합니다.
이렇게 하면 추가 기능을 솔루션 추가 기능에 필요한 COM 개체로 참조할 수 있습니다. 추가 기능 마법사에서 프로젝트의 .AddIn XML 파일이 생성되지만 솔루션 추가 기능에는 이 파일이 필요하지 않으므로 원하는 경우 이를 삭제할 수 있습니다.
솔루션 추가 기능은 COM 개체이므로 이를 Windows에 등록해야 합니다. 이 개체를 등록하려면 Visual Studio 명령 프롬프트를 시작하고 regasm /codebase SolutionAddinName.dll을 입력합니다.
레지스트리를 통해 추가 기능을 솔루션 파일과 연결할 수 없으므로 코드를 사용하여 이 작업을 수행해야 합니다. 추가 기능을 솔루션 파일에 등록하려면 솔루션 AddIns 컬렉션의 Add 메서드를 사용합니다.
AddIns는 AddIns 컬렉션을 반환합니다. 이는 AddIns의 경우와 비슷하지만 Visual Studio의 모든 추가 기능으로 구성되지 않고 지정한 솔루션 파일에 등록된 추가 기능으로만 구성된다는 점에서 차이가 있습니다. 따라서 추가 기능을 솔루션 추가 기능으로 등록하려면 Solution.AddIns.Add를 사용해야 합니다.
다음은 Visual Basic 및 Visual C#의 예제입니다. 추가 기능 마법사에서 제공하는 OnConnection 메서드의 추가 기능 변수 선언 대신 이 줄을 사용해야 합니다.
Dim addin As EnvDTE.AddIn = _ _applicationObject.Solution2.AddIns.Add("MyAddin1.Connect", "MyAddinName", "My add-in description", True)
EnvDTE.AddIn addin = _applicationObject.Solution.AddIns.Add(MyAddin.Connect, "MyAddinName", "My add-in description", true);