를로드 할 수 없습니다. 나는 코드의 처음 몇 줄을지나 점점 그러나 문제가 있습니다 :/로슬린 /은 참조 찾기 - 제대로 나는 오픈 소스 UML 시퀀스 다이어그램 도구를 만들기 위해 찾고으로 주어진 방법의 모든 메소드 호출을 찾기 위해 코드를 작성하기 위해 노력하고있어 작업 공간
API는 크게 변화 한 것으로 나타나고 나는 코드를보고 적절한 사용을 추론 할 수없는 것.
내가 할 경우 :
var workspace = new CustomWorkspace();
string solutionPath = @"C:\Workspace\RoslynTest\RoslynTest.sln";
var solution = workspace.CurrentSolution;
내가 workspace.CurrentSolution 0 프로젝트를 가지고 찾을 수 있습니다. 나는 이것이 이전에 Workspace.LoadSolution(string solutionFile)
이었던 것과 같을 것이라고 생각했다. 그 해결책은 어떤 프로젝트라도 솔루션에 포함시킬 것이지만이 경로로 어떤 성공도 찾지 못할 것이다.
나는 누군가가 내가 특정 방법의 모든 호출을 식별 할 FindReferences API를 사용할 수있는 방법에 대한 몇 가지 추가 지침을 제공 할 수 있다면 0.o
이, 그것은 매우 감사하겠습니다 정말 혼란 스러워요!
는 다른 방법으로, 나는 정적 분석 접근 방식을 가지고 더 나을 것? 나는 람다 (lambdas), 반복자 (iterator) 메소드 및 비동기 (async)와 같은 것을 지원하고 싶다.
============================================== ======================
편집 - 여기
이 허용 대답에 따라 전체 예입니다using System.Linq;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.MSBuild;
using Microsoft.CodeAnalysis.FindSymbols;
using System.Diagnostics;
namespace RoslynTest
{
class Program
{
static void Main(string[] args)
{
string solutionPath = @"C:\Workspace\RoslynTest\RoslynTest.sln";
var workspace = MSBuildWorkspace.Create();
var solution = workspace.OpenSolutionAsync(solutionPath).Result;
var project = solution.Projects.Where(p => p.Name == "RoslynTest").First();
var compilation = project.GetCompilationAsync().Result;
var programClass = compilation.GetTypeByMetadataName("RoslynTest.Program");
var barMethod = programClass.GetMembers("Bar").First();
var fooMethod = programClass.GetMembers("Foo").First();
var barResult = SymbolFinder.FindReferencesAsync(barMethod, solution).Result.ToList();
var fooResult = SymbolFinder.FindReferencesAsync(fooMethod, solution).Result.ToList();
Debug.Assert(barResult.First().Locations.Count() == 1);
Debug.Assert(fooResult.First().Locations.Count() == 0);
}
public bool Foo()
{
return "Bar" == Bar();
}
public string Bar()
{
return "Bar";
}
}
}
당신의 솔루션을 시도하고 솔루션 -> 작업 공간 -> CanOpenDocuments에서 false로 할당 된이 속성 "CanOpenDocuments"에 비틀 거림 내가 뭘 잘못 했습니까? –
솔루션이 오래되었다는 것을 알고 있습니다. – Jordan