次の方法で共有


オブジェクト マネージャーにライブラリを登録する

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

オブジェクト マネージャーは、使用可能なすべてのライブラリを追跡します。 シンボル参照ツールのシンボルを提供する前に、各ライブラリをオブジェクト マネージャーに登録する必要があります。

通常、VSPackage が読み込まれるときにライブラリを登録します。 ただし、必要に応じて別のタイミングで行うことができます。 VSPackage がシャットダウンすると、ライブラリの登録を解除します。

ライブラリを登録するには、 RegisterLibrary メソッドを使用します。 マネージド コード ライブラリの場合は、 RegisterSimpleLibrary メソッドを使用します。

ライブラリの登録を解除するには、 UnregisterLibrary メソッドを使用します。

オブジェクト マネージャーへの参照を取得するには、 IVsObjectManager2SVsObjectManager サービス ID を GetService メソッドに渡します。

オブジェクト マネージャーでライブラリを登録および登録解除する

オブジェクト マネージャーにライブラリを登録するには

  1. ライブラリを作成します。

    private CallBrowser.Library m_CallBrowserLibrary = null;
    private uint m_nLibraryCookie = 0;
    // Create Library.
    m_CallBrowserLibrary = new CallBrowser.Library();
    
    
  2. 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;
        }
    }
    
    

オブジェクト マネージャーでライブラリの登録を解除するには

  1. 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;
            }
        }
    }