Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Roslyn.Compilers;
- using Roslyn.Compilers.CSharp;
- [...]
- var text = @"class Calc { public static object Eval() { return 42; } }";
- var tree = SyntaxTree.ParseCompilationUnit(text);
- var compilation = Compilation.Create(
- "calc.dll",
- options: new CompilationOptions(assemblyKind: AssemblyKind.DynamicallyLinkedLibrary),
- syntaxTrees: new[] { tree },
- references: new[] { new AssemblyFileReference(typeof(object).Assembly.Location) });
- Assembly compiledAssembly;
- using (var stream = new MemoryStream())
- {
- EmitResult compileResult = compilation.Emit(stream);
- compiledAssembly = Assembly.Load(stream.GetBuffer());
- }
- Type calc = compiledAssembly.GetType("Calc");
- MethodInfo eval = calc.GetMethod("Eval");
- string answer = eval.Invoke(null, null).ToString();
- Assert.AreEqual("42", answer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement