Регистрация библиотеки с помощью диспетчера объектов
Средства просмотра символов, такие как представление классов, обозреватель объектов, браузер вызовов и результаты поиска символов, позволяют просматривать символы в проекте или во внешних компонентах. Символы включают пространства имен, классы, интерфейсы, методы и другие элементы языка. Библиотеки отслеживают эти символы и предоставляют их диспетчеру объектов Visual Studio, который заполняет средства данными.
Диспетчер объектов отслеживает все доступные библиотеки. Перед предоставлением символов для инструментов просмотра символов каждая библиотека должна зарегистрироваться в диспетчере объектов.
Как правило, вы регистрируете библиотеку при загрузке VSPackage. Однако это можно сделать в другое время по мере необходимости. Отмена регистрации библиотеки при завершении работы VSPackage.
Чтобы зарегистрировать библиотеку RegisterLibrary , используйте метод. Для управляемой библиотеки кода используйте RegisterSimpleLibrary этот метод.
Чтобы отменить регистрацию библиотеки, используйте UnregisterLibrary этот метод.
Чтобы получить ссылку на диспетчер объектов, IVsObjectManager2передайте SVsObjectManager идентификатор службы методу 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; } } }