Visual Studio外接程序开发 - 获取C ++项目中的目录路径

时间:2010-09-13 00:05:07

标签: c++ visual-studio visual-c++ visual-studio-addins

我目前正在尝试构建一个类似于VSNewFile的加载项。所以它只是一个简单的扩展,它提供了一种更快的方式来创建新文件。 VSNewFile的问题在于它不适用于C ++项目,我需要它。

这是我的问题:
我无法检索所选目录的绝对路径。我发现的所有样品都是这样的:
(string)((ProjectItem)parent).Properties.Item("FullPath").Value;

虽然这在C#项目中有效,但它不在C ++项目中。在我选择目录时,C ++项目selectedItem.ProjectselectedItem.ProjectItem都是null

重要提示:我不是在谈论过滤器!我是指真实的目录。

欢迎任何帮助。我现在已经搜索了几个小时而没有成功。
感谢

1 个答案:

答案 0 :(得分:0)

也许这会帮助其他遇到同样问题的人:
http://social.msdn.microsoft.com/forums/en-US/vsx/thread/bd738463-ba24-4880-beea-f3ec110d981e

// Subscribe to the SVsShellMonitorSelection service somewhere:  
public void mySetupMethod()  
{  
     IVsMonitorSelection monitorSelection = 
     (IVsMonitorSelection)Package.GetGlobalService(
     typeof(SVsShellMonitorSelection));     
     monitorSelection.AdviseSelectionEvents(this, out cookie);    
}  

// This class (as used in AdviseSelection) must implement the IVsSelectionEvents interface  
// To get the folder path use the following  
public int OnSelectionChanged(IVsHierarchy pHierOld, uint itemidOld,   
  IVsMultiItemSelect pMISOld, ISelectionContainer pSCOld,   
  IVsHierarchy pHierNew, uint itemidNew, IVsMultiItemSelect pMISNew, ISelectionContainer pSCNew)  
{  
  string fullPath;  
  // Get the full path
  pHierNew.GetCanonicalName(itemidNew, out fullPath);  

  // Do something with the path...  
  return VSConstants.S_OK;  
}