2017-04-20 8 views
1

새로운 CSharpCompilation 개체에 이미 존재하는 CSharpCompilation 개체를 포함하고 싶습니다. C#의 프로젝트 간 참조와 유사합니다. 내 현재 해결 방법은 첫 번째 컴파일의 구문 트리를 새 컴파일에 포함시키는 것입니다. 그러나 두 컴파일의 심볼을 비교해야 할 때 문제가됩니다 (둘 다 동일하지 않습니다). MetadataReference.CreateFrom ...()에는 Compilation에 대한 오버로드가 없습니다. 어떻게 든 가능합니까?Roslyn - CSharpCompilation에서 CSharpCompilation 참조

답변

2

나는 CSharpCompilation.ToMetadataReference()을 호출하여 만들 수있는 the CompilationReference type을 찾고 있다고 생각합니다.

+0

이것은 필요한 것이지만 참조 된 컴파일에서 심볼을 재사용하는 대신 새 컴파일을 위해 새로운 심볼이 만들어집니다. 첫 번째 컴파일에서 심볼 찾기를 찾으려면 성능상의 이유로 SymbolFinder.FindSimilarSymbols()를 사용해야합니다. – TWT

0

Compilation 'Project을 모두 Solution에 넣은 다음 ProjectReference을 추가해야합니다.

+0

그러면 모든 기호가 한 번만 생성됩니까? – TWT

+0

@TWT : 예. 이것은 프로젝트 참조를 추가 할 때 VS가하는 것과 정확히 같습니다. – SLaks