Registrar uma biblioteca com o gerenciador de objetos
As ferramentas de navegação de símbolos, como Modo de Exibição de Classe, Pesquisador de Objetos, Navegador de Chamadas e Localizar Resultados de Símbolos, permitem que você exiba símbolos em seu projeto ou em componentes externos. Os símbolos incluem namespaces, classes, interfaces, métodos e outros elementos de linguagem. As bibliotecas controlam esses símbolos e os expõem ao gerenciador de objetos do Visual Studio que preenche as ferramentas com os dados.
O gerenciador de objetos controla todas as bibliotecas disponíveis. Cada biblioteca deve se registrar com o gerenciador de objetos antes de fornecer símbolos para as ferramentas de navegação de símbolos.
Normalmente, você registra uma biblioteca quando um VSPackage é carregado. No entanto, isso pode ser feito em outro momento, conforme necessário. Cancelar o registro da biblioteca quando o VSPackage é desligado.
Para registrar uma biblioteca, use o RegisterLibrary método. Para uma biblioteca de código gerenciado, use o RegisterSimpleLibrary método.
Para cancelar o registro de uma biblioteca, use o UnregisterLibrary método.
Para obter uma referência ao gerenciador de objetos, , IVsObjectManager2passe a ID de serviço para o SVsObjectManager GetService
método.
Registrar e cancelar o registro de uma biblioteca com o gerenciador de objetos
Para registrar uma biblioteca com o gerenciador de objetos
Crie uma biblioteca.
Obtenha uma referência a um objeto do IVsObjectManager2 tipo e chame o RegisterSimpleLibrary método.
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; } }
Para cancelar o registro de uma biblioteca com o gerenciador de objetos
Obtenha uma referência a um objeto do IVsObjectManager2 tipo e chame o UnregisterLibrary método.
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; } } }