2017-04-20 67 views
1

我想将现有的CSharpCompilation对象包含到新的CSharpCompilation对象中。类似于c#中的项目到项目的引用。 我目前的解决方案是在新编译中包含第一个编译的语法树,但是当我需要比较两个编译中的符号(它们不相同)时会出现问题。 MetadataReference.CreateFrom ...(),不包含编译的重载。 这是可能的吗?Roslyn - CSharpCompilation to CSharpCompilation参考

回答

2

我相信你正在寻找the CompilationReference type,可以通过致电CSharpCompilation.ToMetadataReference()创建。

+0

这就是我所需要的,但仍然为新编译创建新符号,而不是在引用编译中重新使用符号。要在第一个编译中找到符号,我需要使用SymbolFinder.FindSimilarSymbols(),我想避免出于性能原因。 – TWT

0

您需要将Compilation s'Project s放在相同的Solution中,然后添加ProjectReference

+0

这将只创建一次所有符号? – TWT

+0

@TWT:是的。这正是VS在添加项目引用时所做的。 – SLaks