6

我正在做可以在这里找到的例子。所以我试图在 C# 脚本中运行 IronPython:

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");
                …

从这里我有这个错误:“没有“Microsoft.CSharp.dll”程序集引用,无法编译动态操作。” 而且我真的不明白那是什么,我忘了添加什么?

在我的参考文献中,我有: 我的项目参考

谢谢你的帮助。

Ps:我在 MonoDevelop 上。

4

3 回答 3

12

这对我有帮助。我正在使用 Xamarian Studio v5.8.1 (build 8) 编写 C# 程序。我只需右键单击“参考”->“编辑参考”-> 开始在搜索栏中输入“Microsoft”-> 选中“Microsoft.CSharp”旁边的框-> 并单击“确定”。

之后我刚刚保存并运行了程序 - 一切都按预期工作!

于 2015-03-30T01:08:02.647 回答
4

好的。基本上,我的错误与我从错误的平台添加 IronPython 程序集有关。验证:

  • 目标框架:4.0

  • 在 [IronPython-2.7.3]->[Platforms]->[Net40] 中添加 IronPython 提供的所有程序集。

感谢所有给我建议的人。

Ps:现在,当然,还有另一个问题……但不再是那个话题了。

于 2012-07-10T22:09:17.513 回答
2

Microsoft.CSharp.dll包含 C# 编译器的动态部分。每当您dynamic在代码中使用时,都需要对其进行引用。我不熟悉 MonoDevelop,但您可能必须将目标框架设置为 4.0,并添加Microsoft.CSharp.dll对项目的引用(可能右键单击项目,“添加引用”,找到 Microsoft.CSharp)。

我的猜测是您使用的项目是使用 VS 的预发布版本创建的,并且缺少正确的引用。

于 2012-07-10T19:54:33.353 回答