我正在开发一个包含数千个解决方案(.sln)和数万个.cs / .cpp / etc文件的项目。
如何找到源文件属于哪个解决方案?
答案 0 :(得分:2)
源文件不是解决方案的一部分。它们是项目的一部分,而项目又是解决方案的一部分。虽然源文件本身没有成为项目一部分的概念。该项目引用了该文件,但没有反过来。一个源文件可以是多个项目的一部分,这可能是不同解决方案的一部分。
您可以做的是解析SLN和VBPROJ / CSPROJ /任何文件以查看哪些文件引用特定的源文件。这些文件只是文本,包含有关解决方案或项目的各种信息,包括哪些项目是解决方案的一部分以及哪些文件是项目的一部分。您可以递归地解析文件夹中的文件,以构建表示解决方案中项目中文件的整个树。
请注意,大多数文件将由项目文件中的相对路径引用。
答案 1 :(得分:0)
从Visual Commander开始,然后您可以通过编程方式访问您的解决方案" DOM-style"使用Visual Studio的Automation and Extensibility for Visual Studio API。用.NET语言编写VS命令,将解决方案遍历到项目中,然后进入项目项目,将找到的所有文件(项目项目)转储到日志文件,数据库,Web服务中,你有什么。
请参阅此文章HOWTO: Navigate the files of a solution from a Visual Studio .NET macro or add-in,了解如何浏览Visual Studio的DTE。
我知道对包含链接而不是真正帮助的答案皱眉,但EnvDTE的各种风格的文档非常广泛,任何代码示例都将展示如何使用它将会非常大。所以我只是给你这个强有力的提示:查看Visual Studio可扩展性模型,并通过Visual Commander轻松地挂钩它,它可以完成在Visual Studio扩展中包装代码的所有艰苦工作。从那里,您可以使用任何合理的技术(MSBuild,PowerShell,批处理文件)将每个解决方案加载到VS并运行新命令。
这实际上回答了这个问题:对于我的数千个解决方案中使用的所有源文件,哪些解决方案使用它们。但我看到你(@Sabz),在评论的下方,给出了一个合理的方式来回答一个源文件的问题,这更准确地说是你所问的。
N.B。:我还没有(还)使用过Visual Commander,所以我只是假设它像宣传的一样工作。