<html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></head><body><div><div style="font-family:Calibri,sans-serif;font-size:11pt">Hi,<br><br>I will prepare small repro: minimal host + mono libs I use(my app doesn't use full installation), and we will check it out further.<br>
</div></div><hr><span style="font-family:Tahoma,sans-serif;font-size:10pt;font-weight:bold">From: </span><span style="font-family:Tahoma,sans-serif;font-size:10pt">Marek Safar</span><br><span style="font-family:Tahoma,sans-serif;font-size:10pt;font-weight:bold">Sent: </span><span style="font-family:Tahoma,sans-serif;font-size:10pt">23/11/2012 23:13</span><br>
<span style="font-family:Tahoma,sans-serif;font-size:10pt;font-weight:bold">To: </span><span style="font-family:Tahoma,sans-serif;font-size:10pt">Bartosz Przygoda</span><br><span style="font-family:Tahoma,sans-serif;font-size:10pt;font-weight:bold">Cc: </span><span style="font-family:Tahoma,sans-serif;font-size:10pt"><a href="mailto:mono-devel-list@lists.ximian.com">mono-devel-list@lists.ximian.com</a></span><br>
<span style="font-family:Tahoma,sans-serif;font-size:10pt;font-weight:bold">Subject: </span><span style="font-family:Tahoma,sans-serif;font-size:10pt">Re: [Mono-dev] DLR with Mono.CSharp.Evaluator: The predefined type Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported</span><br>
<br></body></html>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>