使用Roslyn获取除.cs之外的其他文件

Fla*_*ric 7 c# code-analysis roslyn

我想找到一个方法的用法Roslyn.我设法通过.cs文件中的代码执行此操作.另外,我想分析解决方案中包含的JavaScript文件.我知道Roslyn无法分析JavaScript的语法或语义,因此我只想textural occurrencies在所有.js文件中搜索我方法的名称.

我检索所有这样的文件(文件):

foreach (Project pr in solution.Projects)
{
    foreach (Document doc in pr.Documents)
    {
      // my js-file is not included
    }
}
Run Code Online (Sandbox Code Playgroud)

Documents只包含.cs文件.有没有办法获取.js文件或我必须获取文件夹project.FilePath并获取旧文件File API,这可能会导致问题,因为不一定文件夹中的所有文件必须已添加到项目等?

编辑:
AdditionalFiles没有持有任何文件.

cch*_*ain 3

您需要使用Project.AdditionalDocuments

foreach (Project pr in solution.Projects) {
    foreach (TextDocument doc in pr.AdditionalDocuments) {
      // doc is a non-csharp TextDocument object.
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

要使用上述内容,您必须确保目标项目中的文件的构建操作设置为AdditionalFiles. 目前没有好的方法可以使用这种类型的构建操作在目标项目中生成文件,因此您目前只能依靠代码的用户手动创建文件的存根,点击F4文件属性并更改其将操作构建为AdditionalFiles,之后您的扩展将能够拾取它。

附加文件