Visual studio Visual Studio-如何找到源文件所属的解决方案?

Visual studio Visual Studio-如何找到源文件所属的解决方案?,visual-studio,Visual Studio,我正在处理一个包含数千个解决方案(.sln)和数万个.cs/.cpp/etc文件的项目 如何找到源文件是哪个解决方案的一部分?源文件不是解决方案的一部分。它们是项目的一部分,而项目又是解决方案的一部分。但是,源文件本身没有成为项目一部分的概念。项目有一个对文件的引用,但不是相反。一个源文件可以是多个项目的一部分,这些项目可能是不同解决方案的一部分 您可以解析SLN和VBPROJ/CSPROJ/which文件,以查看哪些文件引用了特定的源文件。这些文件只是文本,包含有关解决方案或项目的各种信息,包

我正在处理一个包含数千个解决方案(.sln)和数万个.cs/.cpp/etc文件的项目


如何找到源文件是哪个解决方案的一部分?

源文件不是解决方案的一部分。它们是项目的一部分,而项目又是解决方案的一部分。但是,源文件本身没有成为项目一部分的概念。项目有一个对文件的引用,但不是相反。一个源文件可以是多个项目的一部分,这些项目可能是不同解决方案的一部分

您可以解析SLN和VBPROJ/CSPROJ/which文件,以查看哪些文件引用了特定的源文件。这些文件只是文本,包含有关解决方案或项目的各种信息,包括哪些项目是解决方案的一部分,哪些文件是项目的一部分。您可以递归地解析文件夹中的文件,以构建一个完整的树,表示解决方案中项目中的文件

请注意,大多数文件将由项目文件中的相对路径引用。

从开始,然后您可以使用Visual Studio的API以编程方式访问解决方案“DOM样式”。用.NET语言编写一个VS命令,将解决方案遍历到它的项目中,然后遍历到项目项中,将找到的所有文件(项目项)转储到日志文件、数据库、web服务中,等等

例如,请参阅这篇关于如何导航VisualStudio的DTE的文章

我知道我不赞成只包含链接而不包含真正帮助的答案,但是EnvDTE的各种风格的文档非常丰富,任何演示如何使用它的代码示例都会非常大。因此,我只是给你一个强烈的提示:看看VisualStudio扩展性模型,并通过VisualCommander轻松地连接到它,VisualCommander完成了在VisualStudio扩展中包装代码的所有艰苦工作。从那里,您可以使用任何合理的技术(MSBuild、PowerShell、批处理文件)将每个解决方案加载到VS中并运行新命令

这实际上回答了一个问题:对于我的数千个解决方案中的任何一个所使用的所有源文件,哪些解决方案使用它们。但我看到您(@Sabz)在下面的一条评论中给出了一个合理的方式来回答一次一个源文件的问题,这正是您所问的


注意:我还没有(尚未)使用VisualCommander,所以我只是假设它能像广告中宣传的那样工作。

好的,我找到了一种使用LOCATE32工具的方法,该工具是免费提供的。(windows搜索也可以)1。搜索包含文本“SourceFileName.cs”2的所有*.csproj。您将找到该文件所属的项目。3.搜索包含“ProjectNameFoundInStep2.csproj”4的所有SLN文件。你会得到所有的解决方案