private CSharpCompilation CreateCompilation(string compilationContent, string assemblyName) { SourceText sourceText = SourceText.From(compilationContent, Encoding.UTF8); SyntaxTree syntaxTree = CreateSyntaxTree(sourceText).WithFilePath(assemblyName); CSharpCompilation compilation = CreateCompilation(assemblyName).AddSyntaxTrees(syntaxTree); compilation = ExpressionRewriter.Rewrite(compilation); //var compilationContext = new RoslynCompilationContext(compilation); //_compilationCallback(compilationContext); //compilation = compilationContext.Compilation; return(compilation); }
public static CSharpCompilation Rewrite(CSharpCompilation compilation) { var rewrittenTrees = new List <SyntaxTree>(); foreach (var tree in compilation.SyntaxTrees) { var semanticModel = compilation.GetSemanticModel(tree, ignoreAccessibility: true); var rewriter = new ExpressionRewriter(semanticModel); var rewrittenTree = tree.WithRootAndOptions(rewriter.Visit(tree.GetRoot()), tree.Options); rewrittenTrees.Add(rewrittenTree); } return(compilation.RemoveAllSyntaxTrees().AddSyntaxTrees(rewrittenTrees)); }