Visual Studio 2015解决方案资源管理器操作:UIHierarchy与IVsHierarchy

时间:2016-06-04 19:41:51

标签: c# visual-studio visual-studio-extensions envdte

我正在构建自定义VS2015扩展(VSIX包)。我的主要任务是对解决方案资源管理器进行操作,如下所示:

  1. 将现有项目附加到解决方案
  2. 从解决方案中删除项目
  3. 装载/卸载项目
  4. 枚举解决方案项目,不仅包括项目,还包括解决方案文件夹,卸载的项目,非项目项目。
  5. 我找到了一些样本,其中大多数使用了三种常见策略中的一种:

    1. EnvDTE.SolutionEnvDTE.Project等等。
    2. EnvDTE.UIHierarchy之类。
    3. Microsoft.VisualStudio.Shell.Interop.IVsSolutionIVsHierarchy
    4. 我可以看到第一个在覆盖情景方面最差。我无法弄清楚的是最后两个之间的区别。我应该考虑哪一项任务?他们背后的概念是什么?

1 个答案:

答案 0 :(得分:-1)

它们都是com解决方案对象实现的接口。查看msdns以查看方法的不同。

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivssolution.aspx

https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.interop.ivshierarchy.aspx

UIHierarchy是工具窗口的接口(任何带有节点的窗口,而不仅仅是解决方案资源管理器),它具有层次结构,来自VSSDK,而IVs接口直接来自互操作并表示视图中的实际项目。

您所说的IVsSolution是最直接的界面。所有IVsSolutions也都是IVsHierarchy,但解决方案资源管理器中的任何节点都是层次结构,但显然不是解决方案。