2013-10-30 47 views
1

我正在嘗試在特定符號的解決方案中查找所有引用,但位置屬性始終爲空。我加載獨立的項目,找到我正在尋找的符號,然後要求編譯給我所有對符號的引用。我得到一個引用(正確,因爲只有一個屬性用法),但位置屬性是空的。這裏是代碼爲什麼ReferencedSymbol的位置爲空?

IWorkspace workspace = Workspace.LoadStandAloneProject(projectPath); 

var solution = workspace.CurrentSolution; 

var searchAttributeName = typeof(OneToOneAttribute).FullName; 

var project = solution.Projects.First(); 

var compilation = project.GetCompilation(); 

var attSymbol = (NamedTypeSymbol)compilation.GetTypeByMetadataName(searchAttributeName); 

var references = attSymbol.FindReferences(solution); 

    foreach (ReferencedSymbol referencedSymbol in references) 
    { 
     foreach (ReferenceLocation location in referencedSymbol.Locations) 
     { 
     } 
    } 
+1

要檢查,compilation.GetDiagnostics()會給你什麼?有沒有編譯錯誤或其他的東西,表明你的項目加載不好? –

+0

@JasonMalinowski:我得到五個錯誤,引用丟失。所以如果我明白這一點,即使項目有引用和編譯,當像這樣加載時,我必須手動添加它們? – epitka

+0

這可能是LoadStandAloneProject的一個問題。您是否考慮加載包含您的項目的完整解決方案? –

回答

1

正如在評論中所討論的,LoadStandAloneProject沒有正確創建您的項目引用。正確的解決方法是使用LoadSolution。