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)
{
}
}
要檢查,compilation.GetDiagnostics()會給你什麼?有沒有編譯錯誤或其他的東西,表明你的項目加載不好? –
@JasonMalinowski:我得到五個錯誤,引用丟失。所以如果我明白這一點,即使項目有引用和編譯,當像這樣加載時,我必須手動添加它們? – epitka
這可能是LoadStandAloneProject的一個問題。您是否考慮加載包含您的項目的完整解決方案? –