Hello,<div><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>I'm currently implementing REPL functionality in my app that embeds mono runtime (3.0.1), and I've encountered some issues when evaluating code that contains dynamic invocation.</div><div><br>
</div><div>For example, consider this simple dynamic class:</div><div><br></div><div><div><span style="white-space:pre-wrap">   </span>public class Foo : DynamicObject {</div><div><span style="white-space:pre-wrap">               </span>public override bool TryGetMember(GetMemberBinder binder, out object result)<span style="white-space:pre-wrap"> </span>{</div>

<div><span style="white-space:pre-wrap">                  </span>result = 5;</div><div><span style="white-space:pre-wrap">                      </span>return true;</div><div><span style="white-space:pre-wrap">             </span>}</div><div><span style="white-space:pre-wrap">        </span>}</div>

</div><div><br></div><div>The following Evaluator initialization:</div><div><br></div><div><div>        var settings = new CompilerSettings();</div><div>        var printer = new ConsoleReportPrinter();</div><div>        eval = new Evaluator(new CompilerContext(settings, printer));</div>

<div>        eval.ReferenceAssembly(typeof(REPL).Assembly);</div><div>        eval.Run("using System;");</div></div><div><br></div><div>And the evaluation</div><div><br></div><div>        dynamic f = new Program.Foo();</div>

<div>        f.Whatever;</div><div><br></div><div>gives following error:</div><div><br></div><div><div>error CS0518: The predefined type Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported (1,4): error CS1969: Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly reference.</div>

</div><div><br></div></blockquote><div><br></div><div>This is strange, are you embedding correct runtime version (4.0) ?</div><div><br></div><div>I have tried to cook full sample based on your code and it works without error for me as a standalone app.</div>
<div><br></div><div><div>using System;</div><div>using System.Dynamic;</div><div>using Mono.CSharp;</div><div><br></div><div>public class Foo : DynamicObject</div><div>{</div><div>    public override bool TryGetMember(GetMemberBinder binder, out object result)</div>
<div>    {</div><div>        Console.WriteLine("called");</div><div>        result = 5;</div><div>        return true;</div><div>    }</div><div>}</div><div><br></div><div>class C</div><div>{</div><div>    public static void Main()</div>
<div>    {</div><div>        var settings = new CompilerSettings();</div><div>        var printer = new ConsoleReportPrinter();</div><div>        var eval = new Evaluator(new CompilerContext(settings, printer));</div><div>
        eval.ReferenceAssembly(typeof(Foo).Assembly);</div><div>        eval.Run("using System;");</div><div>        eval.Run("dynamic f = new Foo();");</div><div>        eval.Run("f.Whatever;");</div>
<div>    }</div><div>}</div></div><div><br></div><div>Marek</div></div></div></div>