我正在做可以找到here的例子。 所以我试图在C#脚本中运行IronPython:
的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“程序集引用,则无法编译动态操作。” 我真的不明白那是什么,我忘了添加什么?
在我的参考资料中,我有:
感谢您的帮助。
Ps:我在MonoDevelop上。
答案 0 :(得分:12)
这对我有所帮助。我正在使用Xamarian Studio v5.8.1(build 8)编写C#程序。我只需要右键点击"参考文献" - > "编辑参考文献" - >开始打字"微软"在搜索栏中 - >选中" Microsoft.CSharp"旁边的复选框。 - >并单击"确定"。
我刚刚保存并运行程序 - 一切都按预期工作!
答案 1 :(得分:4)
确定。基本上,我的错误与我从错误的平台添加我的IronPython程序集这一事实有关。 验证:
目标框架:4.0
在[IronPython-2.7.3]中添加IronPython提供的所有程序集 - > [平台] - > [Net40]。
向所有给我建议的人致谢。
Ps:当然,现在还有另一个问题......但不再是那个话题了。
答案 2 :(得分:2)
Microsoft.CSharp.dll
包含C#编译器的动态部分。只要在代码中使用dynamic
,就需要引用它。我不熟悉MonoDevelop,但您可能必须将目标框架设置为4.0,并向项目添加对Microsoft.CSharp.dll
的引用(可能右键单击项目,'添加引用',查找Microsoft.CSharp)。
我的猜测是您正在使用的项目是使用VS的预发布版本创建的,并且缺少正确的引用。