개체 관리자에 라이브러리 등록
클래스 뷰, 개체 브라우저, 호출 브라우저 및 기호 찾기 결과와 같은 기호 검색 도구를 사용하면 프로젝트 또는 외부 구성 요소에서 기호를 볼 수 있습니다. 기호에는 네임스페이스, 클래스, 인터페이스, 메서드 및 기타 언어 요소가 포함됩니다. 라이브러리는 이러한 기호를 추적하고 도구를 데이터로 채우는 Visual Studio 개체 관리자에 노출합니다.
개체 관리자는 사용 가능한 모든 라이브러리를 추적합니다. 각 라이브러리는 기호 검색 도구에 대한 기호를 제공하기 전에 개체 관리자에 등록해야 합니다.
일반적으로 VSPackage가 로드되면 라이브러리를 등록합니다. 그러나 필요에 따라 다른 때에 등록할 수 있습니다. VSPackage가 종료되면 라이브러리의 등록을 취소합니다.
라이브러리를 등록하려면 RegisterLibrary 메서드를 사용합니다. 관리 코드 라이브러리의 경우 RegisterSimpleLibrary 메서드를 사용합니다.
라이브러리의 등록을 취소하려면 UnregisterLibrary 메서드를 사용합니다.
개체 관리자 IVsObjectManager2에 대한 참조를 가져오려면 SVsObjectManager 서비스 ID를 GetService
메서드에 전달합니다.
개체 관리자에 라이브러리 등록 및 등록 취소
개체 관리자에 라이브러리를 등록하려면
라이브러리를 만듭니다.
IVsObjectManager2 형식의 개체에 대한 참조를 가져오고 RegisterSimpleLibrary 메서드를 호출합니다.
private void RegisterLibrary() { if (m_nLibraryCookie != 0) throw new Exception("Library already registered with Object Manager"); // Obtain a reference to IVsObjectManager2 type object. IVsObjectManager2 objManager = GetService(typeof(SVsObjectManager)) as IVsObjectManager2; if (objManager == null) throw new NullReferenceException("GetService failed for SVsObjectManager"); try { int hr = objManager.RegisterSimpleLibrary(m_CallBrowserLibrary, out m_nLibraryCookie); Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr); } catch (Exception e) { // Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message); throw; } }
개체 관리자에서 라이브러리 등록을 취소하려면
IVsObjectManager2 형식의 개체에 대한 참조를 가져오고 UnregisterLibrary 메서드를 호출합니다.
private void UnregisterLibrary() { if (m_nLibraryCookie != 0) { // Obtain a reference to IVsObjectManager2 type object. IVsObjectManager2 objManager = GetService(typeof(SVsObjectManager)) as IVsObjectManager2; if (objManager == null) throw new NullReferenceException("GetService failed for SVsObjectManager"); try { objManager.UnregisterLibrary(m_nLibraryCookie); } catch (Exception e) { // Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message); throw; } finally { m_nLibraryCookie = 0; } } }