如何: 使用物件管理員註冊程式庫
如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件。
符號瀏覽工具,例如類別檢視,物件瀏覽器,呼叫瀏覽器和尋找符號結果,可讓您檢視在您的專案或外部元件的符號。 這些符號包括命名空間、 類別、 介面、 方法和其他語言項目。 程式庫追蹤這些符號,以及公開到Visual Studio物件管理員會填入資料的工具。
物件管理員會追蹤的所有可用的媒體櫃。 每個程式庫必須使用物件管理員註冊,才能提供符號瀏覽工具的符號。
一般而言,當載入 VSPackage 註冊程式庫。 不過,它可在另一次所需。 取消登錄程式庫 VSPackage 關閉時。
若要註冊的程式庫,使用RegisterLibrary方法。 在 managed 程式碼程式庫,使用RegisterSimpleLibrary方法。
若要取消註冊文件庫,請使用UnregisterLibrary方法。
若要取得的參考,object manager IVsObjectManager2,傳遞SVsObjectManager服務識別碼GetService
方法。
註冊及取消註冊的程式庫和物件管理員
若要註冊物件管理員與程式庫
建立程式庫。
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();
取得物件的參考IVsObjectManager2輸入,然後呼叫RegisterSimpleLibrary方法。
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; } }
從程式庫取消登錄物件管理員
取得物件的參考IVsObjectManager2輸入,然後呼叫UnregisterLibrary方法。
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; } } }