我正在编写一个代码分析程序。起初我认为打开文件的正确方法.cs
是从文件中获取.sln
与给定解决方案相关的项目列表,然后从每个单独的项目 ( .csproj
) 中获取其文件列表.cs
。
然而,在分析.csproj
不同项目的文件时,我发现它们并不总是包含.cs
与特定项目相关的文件的完整列表。我根本没有找到专门的解析器.sln
。
请告诉我Visual Studio本身如何找到这些文件?
一开始,我打算简单地搜索.cs
特定目录中的文件,但后来我想以一种美观且正确的方式做到这一点。但具体应该如何做尚不清楚。
据我所知,VS 有多种方法来识别此类文件,但它们都取决于项目的配置方式和解决方案结构。我所知道的主要内容:
.csproj
- 并非所有文件都可能会列在这里.cs
,但通常手动添加的文件都会被扔到这里,但根据项目设置,VS本身可以将文件推送到那里;.cs
位于某些项目目录中的文件。也就是说,您有一个“Models”文件夹,然后.cs
该文件夹内的所有文件都可以自动添加到项目中,即使它们没有在步骤 1 中的文件夹中列出。但这主要发生在项目配置为使用文件结构;.sln
文件 - 一般来说,解决方案文件似乎不包含有关项目文件的信息 - 它指示解决方案中包含哪些项目及其依赖项。也就是说,要分析,您需要解析该文件以获取项目列表,然后分析每个项目.csproj
;该文件也.sln
没有官方解析器,但您可以使用简单的文本操作来实际获取有关项目的信息。为此,.csproj
您可以使用 XML 解析器。好吧,作为建议 - 查看库
Roslyn
- 在它的帮助下您可以访问项目结构和文件