共用方式為


藉由使用 Visual Studio 程式庫實作 VSPackages

IVsPackageImpl Visual Studio 的媒體櫃中的類別會提供最少實作的IVsPackage介面。 IVsPackageImpl大部分的維護方法會處理IVsPackage。 您可能需要提供有意義的實作會覆寫其他方法包括:

使用 Visual Studio 程式庫通常會實作的封裝會將 VSPackage 類別繼承 ATL 的CComObjectRootEx ClassCComCoClass Class和 Visual Studio 程式庫的 IVsPackageImpl。 例如,以下是從 Reference.Package 範例的 VSPackage 類別宣告:

class ATL_NO_VTABLE BasicPackage : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<BasicPackage, &CLSID_BasicPackage>,
    public IVsPackageImpl<BasicPackage, &CLSID_BasicPackage>,
    ...

IVsPackageImpl VSPackage 類別本身,並找出 VSPackage 的 GUID 的指標,會顯示的樣板參數。

支援與 COM 對應的 QueryInterface

若要取得 ATL 的支援QueryInterface,它的 COM 對應必須列出類別會實作的介面。 比方說下, 面是 Reference.Package 範例中的 VSPackage 類別的 COM 對應:

BEGIN_COM_MAP(BasicPackage)
    COM_INTERFACE_ENTRY(IVsPackage)
    ...
END_COM_MAP()

如需有關 COM 對應的詳細資訊,請參閱Implementing CComObjectRootExCOM_INTERFACE_ENTRY Macros

支援與登錄對應的登錄

Visual Studio 的程式庫使用 ATL 樣式。RGS 檔支援的 COM 物件的登錄。 為了支援語彙基元中的取代。RGS 檔,Visual Studio 程式庫使用登錄對應。 登錄對應的清單中的符號,來取代,並支援使用 Id 的字串資料表資源。

比方說下, 面是 Reference.Package 範例中的 VSPackage 類別的登錄對應:

VSL_BEGIN_REGISTRY_MAP(IDR_BASICPACKAGE_RGS)
    VSL_REGISTRY_MAP_GUID_ENTRY(CLSID_BasicPackage)
    VSL_REGISTRY_RESOURCE_STRING_ENTRY(IDS_BASICPACKAGE_REGISTRY_NAME)
    ...
VSL_END_REGISTRY_MAP()

請參閱

概念

Visual Studio 的擴充性範例