私は、C#内にIronPythonを埋め込むことをテストするために、単純なハローワールドを行おうとしていますが、この問題を解決できないようです。
これは私のC#ファイルです。
using System;
using IronPython.Hosting;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
using System.IO;
public class dynamic_demo
{
static void Main()
{
var ipy = Python.CreateRuntime();
dynamic test = ipy.UseFile(@"../../Test.py");
test.Simple();
}
}
そして、これはpythonクラス;
import sys
def Simple():
print 'Hello from Python'
print "Call Dir(): "
print dir()
print "Print the Path: "
print sys.path
私のターゲット.NETフレームワークは4.0で、IronPython 2.6を使用しています。
これを実行すると「CSC」というファイルから2つのエラーが発生します。エラー5コンパイラに必要なメンバーがありません
'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember' C:\ Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\CSC consoleTest
もう1つは、作成したC#ファイルからのものです
エラー6動的式のコンパイルに必要な1つ以上の型が見つかりません。参照がありませんか? C:\ Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs 17 9 consoleTest
ビルドからの出力は次のとおりです
1>------ Build started: Project: consoleTest, Configuration: Debug Any CPU ------
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSite' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.CallSiteBinder' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\IronPython 2.6\Microsoft.Scripting.Core.dll'
1>CSC : warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll'
1>CSC : error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember'
1>C:\Users\Tolga\documents\visual studio 2012\Projects\WindowsFormsApplication1\consoleTest\Program.cs(17,9,17,20): error CS1969: One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Microsoft.CSharp.dll
への参照を追加する必要があります。これにより、C#でdynamic
を使用するために必要なタイプが提供されます。
また、古いリリースと新しい.NETフレームワークとの間に互換性がないため、IronPython 2.7 [.3]以降にアップグレードする必要があります。
間違ったターゲットアセンブリへの参照が含まれている の場合にも、このエラーが発生します。たとえば、.Net 4.0 Fullプロファイルに対してビルドする場合、次のIronPythonアセンブリを含める必要があります。
<install directory>\IronPython 2.7\Platforms\Net40
Net35
ディレクトリからアセンブリを含めると、RuntimeBinder
エラーが表示されなくなります。