我可以分析与Roslyn的Project(.csproj)和Solution(.sln)关系吗?

时间:2016-08-27 18:21:17

标签: visual-studio roslyn roslyn-code-analysis

我刚刚开始使用Roslyn,因为我想开发一些静态分析宠物项目,专注于生成依赖图(输出将是.dot文件,使用Graphviz编译为.pdf)。

我可以看到以每个文件为基础分析代码的潜力,但我需要以下操作(或多或少):

  1. 给定solution.sln文件,找到它引用的所有project.csproj个文件;
  2. 给定project.csproj文件,找到它引用的所有sourcecode.cs个文件;
  3. 像往常一样用Roslyn解析这些文件;
  4. 拥有一个解决方案范围的解析树或其他东西,其中跨越多个项目的命名空间将其类组合在一起。
  5. 具体来说,我的问题是:我可以使用Roslyn执行操作1,2和4,还是应该使用其他工具/技术?有什么建议吗?

    P.S。我看到有一个VisualStudioWorkspace,但我无法弄清楚我要做些什么才能使用它。

1 个答案:

答案 0 :(得分:6)

是;这当然是可能的。

在VS本身中使用

VisualStudioWorkspace;你应该只在VS插件中使用它来访问当前的解决方案。

要自行加载解决方案,请使用MSBuildWorkspace。 然后,您将要为每个项目合并Compilation s中的符号。