获得分析仪的解决方案

时间:2017-04-03 07:26:21

标签: c# roslyn roslyn-code-analysis

我正在为Visual Studio创建na分析器,我需要SymbolFinder.FindSourceDefinitionAsync(ISymbol,Solution)所需的Solution属性,以确保我真正操作我想要的类型。

public static async Task<ITypeSymbol> GetBaseScenario(ITypeSymbol type)
    {
        if (type == null)
            return null;

        var origType = await SymbolFinder.FindSourceDefinitionAsync(type, _solution);
        if (BaseScnSymbols.Contains(origType) || BaseVersionScnSymbols.Contains(origType))
            return origType as ITypeSymbol;

        return null;
    }

我可以获得语义模型,编译,但我无法得到解决方案。 我怎样才能得到解决方案?这个问题有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

在分析仪期间,您不能并且通常不应尝试访问解决方案。这是为了表现和正确。 This answer仍然适用。如果您描述实际情况,通常会有一种方法无法获得解决方案。

答案 1 :(得分:0)

据我所知,获得解决方案符号的唯一方法是使用MSBuildWorkspace.OpenSolutionAsync通过物理路径加载它。