使用本机界面获取解决方案中的选定项目

Get selected items in solution with native interfaces

我试图在一个解决方案中获取所有选定的项目,并使用本机代码。对于本机代码,我指的是不使用 DTE.

的代码

我查看了文档并试图找到合适的解决方案,但是我并没有走得太远。我发现的是包含以下内容的 IVsUiHierarchy which contains the ExecCommand 方法。

Commands that act on a specific item within the hierarchy. (If ItemID equals VSITEMID_SELECTION, the command is applied to the selected item or items.)

所以我怀疑他们说的方法,就是前面提到的ExecCommand一种。一方面,我不太确定如何从 IVsHierarchy 或类似的对象获取 IVsHierarchy 对象,另一方面,我不太确定如何正确使用 ExecCommand 方法.此外,我什至不太确定这是否是接近此的 'right way'。

注意:我正在寻找不包含以下代码的解决方案this answer

您可以使用 IVsMonitorSelection.GetCurrentSelection 来识别解决方案资源管理器中的所有选定项目。

以上将为您 return 一个 IVsMultiItemSelect 接口,您可以使用该接口调用 IVsMultiItemSelect.GetSelectedItems 来检索 VSITEMSELECTION 值的数组。

a few extensibilty samples利用了GetSelectedItems,大家可以参考一下。

真诚的, 埃德·多尔