I've put the code and binaries needed to reproduce this issue under this repository: <a href="https://github.com/bprzygoda/mono-dlr-repro">https://github.com/bprzygoda/mono-dlr-repro</a><div><br></div><div>Folder structure:</div>
<div><i>lib</i>: binaries from mono 3.0.1 distribution (minimal set)</div><div><i>managed</i>: managed-part of the repro, the executable is also contained in root directory, built with vs2012</div><div><br></div><div>Files:</div>
<div><i>mono-2.0.dll, Mono.CSharp.dll</i> - from 3.0.1 distribution</div><div><br></div><div><br><div class="gmail_extra"><br><br><div class="gmail_quote">On 23 November 2012 23:13, Marek Safar <span dir="ltr"><<a href="mailto:marek.safar@gmail.com" target="_blank">marek.safar@gmail.com</a>></span> wrote:<br>
<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">Hello,<div><br><div class="gmail_extra"><div class="gmail_quote">
<div class="im"><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><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 class="im"><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><div>        Console.WriteLine("called");</div><div class="im"><div>        result = 5;</div><div>        return true;</div><div>    }</div><div>}</div><div><br></div></div><div>class C</div>
<div>{</div><div>    public static void Main()</div><div class="im">
<div>    {</div><div>        var settings = new CompilerSettings();</div><div>        var printer = new ConsoleReportPrinter();</div></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><span class=""><font color="#888888"><div><br></div><div>Marek</div></font></span></div></div></div>
</blockquote></div><br></div></div>