public void BuildAssembly(string cSharpSourceCode, string outputFile) { IList <string> assembliesToReference = #if NETCORE // GetCoreFxReferenceAssemblies is helper method that returns the full set of .NET Core reference assemblies. // (There are more than 100 of them.) DataContextDriver.GetCoreFxReferenceAssemblies().ToList(); #else // .NET Framework - here's how to get the basic Framework assemblies: new List <string>() { typeof(int).Assembly.Location, // mscorlib typeof(Uri).Assembly.Location, // System typeof(Enumerable).Assembly.Location, // System.Core }; #endif assembliesToReference.Add(Assembly.GetExecutingAssembly().Location); var compileResult = DataContextDriver.CompileSource(new CompilationInput { FilePathsToReference = assembliesToReference.ToArray(), OutputPath = outputFile, SourceCode = new[] { cSharpSourceCode } }); if (compileResult.Errors.Any()) { throw new Exception("Cannot compile typed context: " + compileResult.Errors[0]); } }
public static void Compile(string cSharpSourceCode, string outputFile, string[] referencedAssemblies) { var compileResult = DataContextDriver.CompileSource(new CompilationInput { FilePathsToReference = DataContextDriver.GetCoreFxReferenceAssemblies().Concat(referencedAssemblies).ToArray(), OutputPath = outputFile, SourceCode = new[] { cSharpSourceCode } }); if (compileResult.Errors.Length > 0) { throw new Exception("Cannot compile typed context: " + compileResult.Errors[0]); } }
private static string[] BuildAssembly(string code, AssemblyName name) { var referencedAssemblies = DataContextDriver.GetCoreFxReferenceAssemblies().Concat(new [] { typeof(SchemaBuilder).Assembly.Location, typeof(CsvReader).Assembly.Location }); var result = DataContextDriver.CompileSource(new CompilationInput { FilePathsToReference = referencedAssemblies.ToArray(), OutputPath = name.CodeBase, SourceCode = new[] { code } }); return(result.Successful ? new string[0] : result.Errors); }
private void RoslynCompile(string[] sources, string assemblyName, string driverFolder) { var referencedAssemblies = DataContextDriver.GetCoreFxReferenceAssemblies().Concat(new[] { typeof(ArchiveReader).Assembly.Location, }).ToArray(); var result = DataContextDriver.CompileSource(new CompilationInput() { FilePathsToReference = referencedAssemblies, SourceCode = sources, OutputPath = Path.Combine(driverFolder, assemblyName) }); if (!result.Successful) { var message = string.Join(' ', result.Errors); throw new Exception($"Compilation failed! {message.ToString()}"); } }
public void Compile(string code, AssemblyName name, IEnumerable <string> assemblyLocations) { var platformAssemblies = DataContextDriver.GetCoreFxReferenceAssemblies(); var references = platformAssemblies.Concat(assemblyLocations).Select(l => MetadataReference.CreateFromFile(l)); var parseOptions = new CSharpParseOptions().WithPreprocessorSymbols("NETCORE"); var compilation = CSharpCompilation.Create( name.Name, references: references, syntaxTrees: new SyntaxTree[] { CSharpSyntaxTree.ParseText(code, parseOptions) }, options: this.Options ); using var fileStream = File.OpenWrite(name.CodeBase); var results = compilation.Emit(fileStream); if (!results.Success) { throw new ArgumentException(string.Format(Exceptions.CannotCompileCode, results.Diagnostics[0].GetMessage(), results.Diagnostics[0].Location.GetLineSpan())); } }
private static string[] AssembliesToReference() { return(DataContextDriver.GetCoreFxReferenceAssemblies() .Append(typeof(TargetObjectBuilder).Assembly.Location).ToArray()); }