Search code examples
c#dynamicironpython.net-assembly

C# dynamic compilation and "Microsoft.CSharp.dll" error


I'm doing the example that can be found here. So I'm trying to run IronPython in a C# script:

Python:

def hello(name):
    print "Hello " + name + "! Welcome to IronPython!"
    return

def add(x, y):
    print "%i + %i = %i" % (x, y, (x + y))
    return

def multiply(x, y):
    print "%i * %i = %i" % (x, y, (x * y))
    return

C#:

using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting.Hosting;
using System;

namespace IntroIronPython
{
    class IronPythonMain
    {
        static void Main(string[] args)
        {
            // Create a new ScriptRuntime for IronPython
            Console.WriteLine("Loading IronPython Runtime...");
            ScriptRuntime python = Python.CreateRuntime();

            try
            {
                // Attempt to load the python file
                Console.WriteLine("Loading Python File...");
                // Create a Dynamic Type for our Python File
                dynamic pyfile = python.UseFile("PythonFunctions.py");
                Console.WriteLine("Python File Loaded!");

                Console.WriteLine("Running Python Commands...\n");

                // Call the hello(name) function
                pyfile.hello("Urda");
                …

And from here I have this error: "Dynamic Operation cannot be compiled without "Microsoft.CSharp.dll" assembly reference." And I seriously don't understand what that is about, what did I forget to add?

In my references I have: References of my project

Thx for your help.

Ps: I'm on MonoDevelop.


Solution

  • Ok. Basically, my mistake was linked to the fact that I added my IronPython assemblies from the wrong platform. Verify that:

    • Target Framework: 4.0

    • Add all the assemblies provided by IronPython in [IronPython-2.7.3]->[Platforms]->[Net40].

    Thx to everyone who gave me advices.

    Ps:Now, of course, there is another problem… But it's not about that topic anymore.