扩展Visual Studio根据文件路径获取ProjectItem或IVsHierarchy

时间:2018-12-20 19:13:55

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

我正在尝试为Visual Studio 2017构建扩展,其想法是自动包括在磁盘上某个文件夹中创建的文件(使用FileSystemWatcher),对文件夹名称和/或文件名的任何更改也应为反映(包括)在项目中。

我四处寻找没有任何运气的现有扩展。

经过一段时间的研究,我已经很接近解决方案了,但是当解决方案较大时,当文件/文件夹名称被更改/删除时,从解决方案资源管理器中删除项目的当前方法无法缩放(具有里面有很多文件)。我当前的方法是使用根IVsHierarchy并对其进行递归处理,然后基于“ canonicalName”找到文件/文件夹。这意味着我每次需要查找文件夹时都必须扫描解决方案。该解决方案受此代码https://www.mztools.com/articles/2014/MZ2014007.aspx

的启发

我从使用Project.ProjectItems开始,但是此集合有时仅包含一个“根”文件夹,即这些文件位于磁盘上

/Test/MyFile.txt
/Test/Folder1
/Test/Folder2
/Test/Folder3

我可以找到的唯一ProjectItem是/ Test /,如果我需要删除/ Test / Folder1即无法运行。使用IVsHierarchy的方法给了我所有的文件夹和实现工作,但是很慢。

所以,我的问题:

是否有一种方法可以基于磁盘上文件/文件夹的完整路径来获取对ProjectItem的引用?这样我就不必遍历解决方案中的所有项目来找到我的ProjectItem并放慢一切。它也可以参考IVsHierarchy,我可以用来获取ProjectItem。

任何帮助将不胜感激。

干杯!

1 个答案:

答案 0 :(得分:0)