SemanticModel.GetSymbolInfo(typeSyntax)返回null

我在解决Roslyn中的某些类型时遇到问题。 大多数时候它按预期工作但在某些情况下,在某些文件中,某些类型无法解决。 这是我用来处理类型的代码:

private string GetTypeName(TypeSyntax type) { var si = _model.GetSymbolInfo(type); var s = si.Symbol; if (s == null) { var ti = _model.GetTypeInfo(type); if (ti.Type?.Kind == SymbolKind.ErrorType) { return "**error type**"; } return "**unknown type**"; } return GetTypeNameFromSymbol(s as ITypeSymbol); } 

我从各种不同的表达式和声明中传递一个TypeSyntax。 它似乎是每个文件和每个类型的失败。 在某些文档中,它不能将Task解析为类型,而在某些文档中,它不能解析不同的异常类型。

我无法创建一个再现这一点的小例子。 我在C#中使用上面的代码给Kotlin编译器: https : //github.com/rogeralsing/ProjectExodus

在某些情况下,我最终在“ 错误类型 ”分支。 而在一些“ 未知型

只有在试图从目前为止我所能看到的一些相当大的解决方案中解决问题时才会发生故障。

什么可以导致这个? 我从文档中得到我的语义模型,如下所示:

 var model = await d.GetSemanticModelAsync(); var root = await d.GetSyntaxRootAsync(); 

还有什么我应该做的吗?

编辑:我已经设法提取这些信息:它说包含程序集丢失。 这是为什么? 源代码解决方案在VS.NET中打开并建好

在这里输入图像描述