// create a C# compilation private Roslyn.Compilers.CSharp.Compilation CreateCSharpCompilation(CompilationRequest input) { // create compiler options var compileOpts = new Roslyn.Compilers.CSharp.CompilationOptions(OutputKind.DynamicallyLinkedLibrary); // create parser options var parseOpts = Roslyn.Compilers.CSharp.ParseOptions.Default; if (input.Definitions != null && input.Definitions.Any()) parseOpts = parseOpts.WithPreprocessorSymbols(input.Definitions); // build syntax trees var trees = input.SourceFilePaths.Select(path => CSharpTree.ParseCompilationUnit(File.ReadAllText(path), path, parseOpts)); // create assembly references var asmRefs = input.ReferencePaths.Select(p => new Roslyn.Compilers.AssemblyFileReference(p)); // create compilation return CSharpCompilation.Create("BladeCsComp.dll", compileOpts, trees, asmRefs); }
// create a C# compilation private Roslyn.Compilers.CSharp.Compilation CreateCSharpCompilation(CompilationRequest input) { // create compiler options var compileOpts = new Roslyn.Compilers.CSharp.CompilationOptions(OutputKind.DynamicallyLinkedLibrary); // create parser options var parseOpts = Roslyn.Compilers.CSharp.ParseOptions.Default; if (input.Definitions != null && input.Definitions.Any()) { parseOpts = parseOpts.WithPreprocessorSymbols(input.Definitions); } // build syntax trees var trees = input.SourceFilePaths.Select(path => CSharpTree.ParseCompilationUnit(File.ReadAllText(path), path, parseOpts)); // create assembly references var asmRefs = input.ReferencePaths.Select(p => new Roslyn.Compilers.AssemblyFileReference(p)); // create compilation return(CSharpCompilation.Create("BladeCsComp.dll", compileOpts, trees, asmRefs)); }