Problems embedding IronPython in C# (Missing Compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember'

29,058

Solution 1

You need to add a reference to Microsoft.CSharp.dll. This provides the required types for using dynamic in C#.

Also, you will likely need to upgrade to IronPython 2.7[.3] or later, as there are some incompatibilities with old releases and the newer .NET frameworks.

Solution 2

You will also get this error if you've included references to the wrong target assemblies. For instance, if you're building against the .Net 4.0 Full profile, you must include the IronPython assemblies from:

<install directory>\IronPython 2.7\Platforms\Net40

Including assemblies from the Net35 directory will also result in the missing RuntimeBinder error.

Share:
29,058

Related videos on Youtube

Tolga E
Author by

Tolga E

Updated on July 09, 2022

Comments

  • Tolga E
    Tolga E almost 2 years

    I'm trying to do a simple hello world to test out embedding IronPython within C# but can't seem to resolve this problem..

    This is my C# file;

    using System;
    using IronPython.Hosting;
    using Microsoft.Scripting;
    using Microsoft.Scripting.Hosting;
    using System.IO;
    
    public class dynamic_demo
    {
        static void Main()
        {
            var ipy = Python.CreateRuntime();
    
            dynamic test = ipy.UseFile(@"../../Test.py");
    
            test.Simple();
        }
    }
    

    And this is the python class;

    import sys
    
    def Simple():
        print 'Hello from Python'
        print "Call Dir(): "
        print dir()
        print "Print the Path: " 
        print sys.path
    

    My target .NET framework is 4.0 and I'm using IronPython 2.6..

    I get 2 errors when I run this one is from a file called "CSC"; Error 5 Missing compiler required member

    'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember' C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\CSC consoleTest

    The other one is from C# file i created

    Error 6 One or more types required to compile a dynamic expression cannot be found. Are you missing a reference? C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs 17 9 consoleTest

    Here's the output from the Build

    1>------ Build started: Project: consoleTest, Configuration: Debug Any CPU ------
    1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
    1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
    1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSiteBinder' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
    1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll'
    1>CSC : error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember'
    1>C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs(17,9,17,20): error CS1969: One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    
  • Tolga E
    Tolga E over 11 years
    When I click references in my project, I see Microsoft.CSharp in the list
  • Reed Copsey
    Reed Copsey over 11 years
    @TolgaE If you're compiling from the command line, I'd recommend using MSBuild with the project, as this will get the references. If you use CSC, you need to specify the references yourself (it won't read from the project file).
  • Reed Copsey
    Reed Copsey over 11 years
    @ToglaE Otherwise, just build it inside of Visual Studio, and it should work (since that reference exists)
  • Tolga E
    Tolga E over 11 years
    I'm building it within Visual Studio. I just hit the "Start" button
  • Reed Copsey
    Reed Copsey over 11 years
    @ToglaE Make sure you're targetting .NET 4.5 or .NET 4.0 Full (not client profile) in the build settings. Does that help?
  • Tolga E
    Tolga E over 11 years
    thanks for the suggestions but it's set to 4.0. I tried with 4.5 as well
  • Tolga E
    Tolga E over 11 years
    I added the build output in the question, in case that helps
  • Reed Copsey
    Reed Copsey over 11 years
    @TolgaE I believe you may need to upgrade to the latest IronPython (2.7.3) as there are likely some incompatibilities with 2.6 and the latest framework.
  • Tolga E
    Tolga E over 11 years
    Huzzah!!! That worked (I downgraded to 2.6 before for another problem that's not relevant right now. Thank you!
  • cod3monk3y
    cod3monk3y over 10 years
    I'm getting this same compiler error (Missing compiler required member) running IronPython 2.7.4 and targeting .NET 4.0 Full Profile.
  • cod3monk3y
    cod3monk3y over 10 years
    Solved my issue. Since it solves a different aspect than this answer, I've added a secondary answer and linked to the question which helped to resolve my issue.
  • Jon H
    Jon H about 8 years
    FWIW adding Microsoft.CSharp.dll means var scriptOptions = ScriptOptions.Default.WithReferences("Microsoft.CSharp") i.e. drop the dll. Stumped me for a few mins :)