Como: registrar uma biblioteca com o Gerenciador de objeto
Navegação de símbolos de ferramentas, como Class View, Pesquisador de objetos, Navegador de chamada e Find Symbol Results, permitem exibir 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 de controlar esses símbolos e expô-los para o Visual Studio Gerenciador de objetos que preenche as ferramentas com os dados.
O Gerenciador de objetos mantém registro de todas as bibliotecas disponíveis. Cada biblioteca deve registrar o Gerenciador de objetos antes de fornecer os símbolos para as ferramentas de navegação de símbolo.
Normalmente, você registrar uma biblioteca quando VSPackage é carregado. No entanto, ele pode ser feito mais tarde conforme necessário. Você cancelar o registro da biblioteca quando o VSPackage é desligado.
Para registrar uma biblioteca, use o RegisterLibrary método. No caso da 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 para o Gerenciador de objetos, IVsObjectManager2, passar o SVsObjectManager serviço de identificação de 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.
Private m_CallBrowserLibrary As CallBrowser.Library = Nothing Private m_nLibraryCookie As UInteger = 0 ' Create Library. m_CallBrowserLibrary = New CallBrowser.Library()
private CallBrowser.Library m_CallBrowserLibrary = null; private uint m_nLibraryCookie = 0; // Create Library. m_CallBrowserLibrary = new CallBrowser.Library();
Obter uma referência a um objeto da IVsObjectManager2 digite e chamar o RegisterSimpleLibrary método.
Private Sub RegisterLibrary() If m_nLibraryCookie <> 0 Then Throw New Exception("Library already registered with Object Manager") End If ' Obtain a reference to IVsObjectManager2 type object. Dim objManager As IVsObjectManager2 = TryCast(GetService(GetType(SVsObjectManager)), IVsObjectManager2) If objManager Is Nothing Then Throw New NullReferenceException("GetService failed for SVsObjectManager") End If Try Dim hr As Integer = objManager.RegisterSimpleLibrary(m_CallBrowserLibrary, m_nLibraryCookie) Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr) Catch e As Exception ' Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message) Throw End Try End Sub
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
Obter uma referência a um objeto da IVsObjectManager2 digite e chamar o UnregisterLibrary método.
Private Sub UnregisterLibrary() If m_nLibraryCookie <> 0 Then ' Obtain a reference to IVsObjectManager2 type object. Dim objManager As IVsObjectManager2 = TryCast(GetService(GetType(SVsObjectManager)), IVsObjectManager2) If objManager Is Nothing Then Throw New NullReferenceException("GetService failed for SVsObjectManager") End If Try objManager.UnregisterLibrary(m_nLibraryCookie) Catch e As Exception ' Code to handle any CLS-compliant exception. Trace.WriteLine(e.Message) Throw Finally m_nLibraryCookie = 0 End Try End If End Sub
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; } } }
Consulte também
Tarefas
Como: expor as listas de símbolos fornecidos pela biblioteca para o Gerenciador de objetos
Conceitos
Suporte a ferramentas de navegação de símbolo