2012-07-10 55 views
6

我正在做可以找到的示例here。 所以我想在C#脚本运行的IronPython:C#动态编译和“Microsoft.CSharp.dll”错误

的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”程序集引用。“ 我真的不明白这是关于什么,我忘了添加什么?

在我引用我有: References of my project

THX对您有所帮助。

Ps:我在MonoDevelop上。

回答

4

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

  • 目标框架:4.0

  • 添加由IronPython的在提供的所有组件[IronPython的-2.7.3] - > [平台] - > [Net40]。

Thx给所有给我建议的人。 Ps:现在,当然还有另一个问题......但它不再是关于那个话题的。

+1

确保您将自己的答案标记为解决方案,以便将来的访问者可以看到您解决了问题!此外,我很高兴你找到并选择使用我的例子:) – Urda 2012-07-12 18:57:08

+0

这也是我的问题。我已经使用Visual Studio C#2010 Express中的“.NET”选项卡添加了我的引用。我认为出现的原始文件可能只来自'Net35'目录。请注意添加引用对话框中的“路径”。当我从IronPython 2.7 \ Platforms \ Net40中添加它们时,构建成功,并且现在两组程序集都出现在添加引用中的.Net选项卡上。 (之前也可能是这种情况,我只是没有注意到)。 – cod3monk3y 2013-12-10 18:10:39

2

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

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

+0

嗨,这正是我所拥有的:Framework 4.0,并且正如您在映像中看到的,Microsoft.CSharp已经在我的参考文献中;这就是我不明白这个错误的原因。 Microsoft.CSharp被添加到引用中,它仍然说我不能编译没有它...你认为还应该添加其他程序集来使它工作吗? – ssx 2012-07-10 20:15:39

+0

哦,我错过了图片中的那个。我不确定那是怎么回事。这可能是一个MonoDevelop问题。 – 2012-07-11 18:08:08

+0

您可以找到我的解决方案波纹管。我想我是从平台添加错误的程序集。 IronPython 2.7.0没有这样的问题,所以我换了。 – ssx 2012-07-12 15:14:21

11

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

之后我才保存并运行程序 - 一切都按预期运行!