2017-11-06 12 views
1

windows.applicationmodel.resources.resourceloader.getstringへのすべての呼び出しをUWPアプリケーションで検索しようとしていますが、compilation.GetSemanticModel().GetSymbolInfo().Symbolは常にnullです。誰かが私に何を教えてもらえますかMetadatareference Roslynがシンボルタイプを正しく検索できるように追加する必要がありますか?ResourceLoaderへの参照をroslynコンパイルに追加

var workspace = MSBuildWorkspace.Create(); 
    var project = await workspace.OpenProjectAsync(projectFilepath); 
    var compilation = await project.GetCompilationAsync(); 
    foreach (var tree in compilation.SyntaxTrees) { 
     var sm = compilation.GetSemanticModel(tree, true); 
     var root = await tree.GetRootAsync(); 
     FindCall(root, sm, calls); 
    } 

FindCallresourceLoader.GetStringに似ているInvocationExpressionsを探します:
は、ここで私が持っているコードの一部です。しかし、これらの呼び出しには型情報がありません。すなわち、実際にwindows.applicationmodel.resources.resourceloader.getstringの呼び出しであるかどうかを知る方法はありません。

答えて

0

必要なすべてのMetadataReferenceは、プロジェクトファイルの情報からMSBuildWorkspaceによって読み込まれている必要があります。 Workspace.Diagnosticsコレクションをチェックして、プロジェクトを開いて正しいシンボルを持たない可能性があるエラーがないかどうかを確認します。

特定のAPIへの参照を探している場合は、最初に対応するRoslynシンボルを見つける必要があります。これは、プロジェクトから取得できるコンパイルオブジェクトを使用して実行できます。あなたが探しているタイプのものであれば、Compilation.GetTypeByMetadataName()メソッドを使って取得できます。そうでない場合は、ISymbol APIを使用して、探しているメンバーを見つけることができます。

関連する問題