如何初始化C ++ Visual Studio VSPackage?

时间:2015-08-07 20:28:02

标签: c++ visual-studio vspackage

我正在将Visual Studio C ++命令行加载项转换为VSPackage。标准C#VSPackages支持initialize()方法,但C ++ VSPackage模板不支持。我的VSPackage没有任何UI元素。我正在寻找外接程序中的OnConnection()方法的等价物(主要是挂钩到SolutionEventSink)

我的VSPackage已经自动加载但是我如何初始化我的C ++ VSPackage?

1 个答案:

答案 0 :(得分:0)

所有包都实现了IVsPackage接口。托管包项目(C#和VB.Net)抽象/隐藏实际的接口实现,由Microsoft.VisualStudio.Shell.Package类提供,它为您提供从底层IVsPackage.SetSite实现调用的Initialize()方法

对于C ++包,IVsPackage :: SetSite实际上是通过您通过IVsPackageImpl继承的VsSiteBaseImpl模板实现的。看看那个SetSite实现,我发现了这个小块代码:

__if_exists(DerivedClass_T::PostSited)
{
    static_cast<DerivedClass_T*>(this)->PostSited(result);
}

基本上说,如果你的包类实现了PostSited,那么在这里调用它。因此,这里的答案似乎是使用VSL / C ++包类实现PostSited方法,以获得类似于托管Package.Initialize方法的方法。

干杯,