2012-07-10 27 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

+0

これも私の問題でした。 Visual StudioのC#2010 Expressで ".NET"タブを使用して参照を追加しました。私は出現した元のファイルは 'Net35'ディレクトリからのみたいかもしれないと思います。 [参照の追加]ダイアログボックスの[パス]に注意してください。 'IronPython 2.7 \ Platforms \ Net40'からそれらを追加すると、ビルドが成功し、両方のアセンブリのセットが参照の追加の.Netタブに表示されるようになりました。 (これはあまりにも前のケースかもしれませんが、気づかなかっただけです)。 – cod3monk3y

2

Microsoft.CSharp.dllには、C#コンパイラの動的部分が含まれています。あなたのコードにdynamicを使用するときはいつでも、それへの参照が必要です。私はMonoDevelopに慣れていませんが、ターゲットフレームワークを4.0に設定し、Microsoft.CSharp.dllへの参照をプロジェクトに追加する必要があります(おそらく、プロジェクトを右クリックし、 '参照の追加'、Microsoft.CSharpの検索) 。

私の推測では、使用しているプロジェクトはVSのプレリリース版で作成されたもので、適切な参照がありません。

+0

こんにちは、これはまさに私が持っているものです:フレームワーク4.0、画像に見られるようにMicrosoft.CSharpはすでに私の参照にあります。それが私がこのエラーを理解していない理由です。 Microsoft.CSharpが参照に追加されていますが、それでも私はそれを使用せずにコンパイルできないと言っています...他のアセンブリも追加する必要がありますか? – ssx

+0

ああ、私はイメージでそれを逃した。私は何が起こっているのか分からない。 MonoDevelopの問題かもしれません。 –

+0

あなたは私の解決策を見つけることができます。私はfromプラットフォームから間違ったアセンブリを追加していたと思います。 IronPython 2.7.0でこのような問題は発生しませんでした。 – ssx

11

これは私を助けたものです。私はXamarian Studio v5.8.1(ビルド8)を使用してC#プログラムを作成しています。 "参照" - > "参照の編集" - >検索バーに "Microsoft"と入力するだけで、 "Microsoft.CSharp"の横にあるチェックボックスをオンにし、 "OK"をクリックするだけでした。

私はちょうどそれを保存し、プログラムを実行した - すべてが期待どおりに動作します!

関連する問題