Я тестировал IronPython на моно 2.8 с кодом в книге Профессиональный IronPython стр.315 со списком 15-3.
using System;
using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting.Hosting;
namespace Method2
{
class Program
{
static void Main(string[] args)
{
// Obtain the runtime.
var IPY = Python.CreateRuntime();
// Create a dynamic object containing the script.
dynamic TestPy = IPY.UseFile("TestClass.py");
// Execute the __test__() method.
TestPy.__test__();
}
}
}
Я вижу, что он скомпилирован и работает безпроблема в Windows 7, тогда как mono 2.8 выдает мне следующее сообщение об ошибке:
Unhandled Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:
`Microsoft.Scripting.Hosting.ScriptScope' does not contain a definition for `__test__'
at (wrapper dynamic-method) object.CallSite.Target (System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,object)
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid1
(System.Runtime.CompilerServices.CallSite,object)
at Method2.Program.Main (string[])
Я думал, что Mono 2.8 поддерживает C # 4.0, который имеет ключевое слово dynamic, но я вижу, что ключевое слово dynamic не полностьюподдерживается с mono.
Это ошибка Mono 2.8?
ДОБАВЛЕНО
Это скрипт на python.
# The class you want to access externally.
class DoCalculations():
# A method within the class that adds two numbers.
def DoAdd(self, First, Second):
# Provide a result.
return First + Second
# A test suite in IronPython.
def __test__():
# Create the object.
MyCalc = DoCalculations()
# Perform the test.
print MyCalc.DoAdd(5, 10)
# Pause after the test session.
raw_input('\nPress any key to continue...')
Это командачто я использовал
dmcs Program.cs /r:System.Core /r:IronPython.dll /r:IronPython.Modules.dll /r:Microsoft.Dynamic.dll /r:Microsoft.Scripting.dll /r:Microsoft.CSharp.dll
Он хорошо компилируется, но все равно ломается, когда я запускаю исполняемый бинарный файл.Нужно ли иметь все библиотеки в одном каталоге, где находится исполняемый файл?