如何使用metadatareference.CreateFromAssembly代替元素化



我下载了 c#用roslyn 从nuget richard> richard bayler levaro 代码。

此软件包编译并使用Visual Studio CTP6运行良好。当我将引用升级到 Microsoft.codeanalisy 到最新版本时,我发现以下内容未能编译为 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的属性似乎也在使用语法词!

我联系了 Richard 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))));

最新更新