Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private Assembly CompileCode(string code)
- {
- var syntaxTree = CSharpSyntaxTree.ParseText(code);
- string assemblyName = Path.GetRandomFileName();
- var references = new MetadataReference[]
- {
- MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(System.ComponentModel.Component).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(System.Linq.Enumerable).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(System.Windows.Forms.Form).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(System.Threading.Tasks.Task).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(CefSharp.Cef).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(CefSharp.WinForms.ChromiumWebBrowser).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(Newtonsoft.Json.JsonConvert).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(NLog.Logger).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(Page_Watch.Browser.BrowserCommunications).Assembly.Location),
- MetadataReference.CreateFromFile(typeof(Site_Automation_Generator.Browser.BrowserExtensions).Assembly.Location)
- };
- var compilation = CSharpCompilation.Create(
- assemblyName,
- syntaxTrees: new[] { syntaxTree },
- references: references,
- options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary));
- using (var ms = new MemoryStream())
- {
- var result = compilation.Emit(ms);
- if (!result.Success)
- {
- IEnumerable<Diagnostic> failures = result.Diagnostics.Where(diagnostic =>
- diagnostic.IsWarningAsError ||
- diagnostic.Severity == DiagnosticSeverity.Error);
- foreach (Diagnostic diagnostic in failures)
- {
- Console.Error.WriteLine("{0}: {1}", diagnostic.Id, diagnostic.GetMessage());
- }
- }
- else
- {
- ms.Seek(0, SeekOrigin.Begin);
- Assembly assembly = Assembly.Load(ms.ToArray());
- return assembly;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement