2012-07-10 57 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」 - >旁邊的框並單擊「確定」。

之後我才保存並運行程序 - 一切都按預期運行!