クラス ビュー、オブジェクト ブラウザー、呼び出しブラウザー、シンボルの検索の結果などのシンボル参照ツールを使用すると、プロジェクトまたは外部コンポーネントでシンボルを表示できます。 シンボルには、名前空間、クラス、インターフェイス、メソッド、およびその他の言語要素が含まれます。 ライブラリはこれらのシンボルを追跡し、ツールにデータを設定する 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; } } }