2015-05-06 41 views
0

我通過理查德Bayler Levaro下載包C#代碼與羅斯林從的NuGet渲染。如何MetadataReference.CreateFromAssembly使用,而不是MetadataFileReference

該軟件包編譯並運行良好與Visual Studio CTP6。當我升級引用Microsoft.CodeAnalysis到最新版本時,我發現以下內容無法編譯爲MetaFileReferences似乎已經消失。

Richard有以下代碼來創建源代碼將被解析的項目中的引用程序集的集合(我認爲)。這裏是他的代碼:

Assembly csharpDisplay = typeof(CodeWalker).Assembly; 
renderer.MetadataReferences.Add(
          new MetadataFileReference(assembly.Location)); 

csharpDisplay.GetReferencedAssemblies() 
    .ToList() 
    .ForEach(a => renderer.MetadataReferences.Add(
    new MetadataFileReference(Assembly.Load(a).Location))); 

然後,他使用引用的程序集列表中創建如下CSharpCompilation

Compilation compilation = CSharpCompilation.Create("CoreRenderer", 
       syntaxTrees: new List<SyntaxTree> { SyntaxTree }, 
       references: MetadataReferences); 

SemanticModel = compilation.GetSemanticModel(SyntaxTree); 

我的研究表明,我需要修改以上使用MetadataReference.CreateFromAssembly。但我不知道如何。我如何重寫上面的代碼?

另外CSharpKind屬性似乎已經消失了一個SyntaxNode!

回答

0

我接觸理查德Bayler Levaro,他下面提供了答案:

 Assembly csharpDisplay = typeof(CodeWalker).Assembly; 
     renderer.MetadataReferences.Add(MetadataReference.CreateFromAssembly(assembly));  
     csharpDisplay.GetReferencedAssemblies() 
        .ToList() 
        .ForEach(a => renderer.MetadataReferences.Add(MetadataReference.CreateFromAssembly(Assembly.Load(a))));