【问题标题】:C# dynamic compilation and "Microsoft.CSharp.dll" errorC# 动态编译和“Microsoft.CSharp.dll”错误
【发布时间】:2012-07-10 15:45:51
【问题描述】:

我正在做可以在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 上。

【问题讨论】:

    标签: c# dynamic ironpython .net-assembly


    【解决方案1】:

    这对我有帮助。我正在使用 Xamarian Studio v5.8.1 (build 8) 编写 C# 程序。我只需要右键单击“参考”->“编辑参考”->开始在搜索栏中输入“Microsoft”->选中“Microsoft.CSharp”旁边的框->然后单击“确定”。

    在那之后我刚刚保存并运行了程序 - 一切都按预期运行!

    【讨论】:

      【解决方案2】:

      好的。基本上,我的错误与我从错误的平台添加 IronPython 程序集有关。 验证:

      • 目标框架:4.0

      • 在[IronPython-2.7.3]->[Platforms]->[Net40]中添加IronPython提供的所有程序集。

      感谢所有给我建议的人。

      Ps:现在,当然,还有另一个问题……但这不再是那个话题了。

      【讨论】:

      • 确保您将自己的答案标记为解决方案,以便未来的访问者可以看到您解决了问题!另外,我很高兴您找到并选择使用我的示例 :)
      • 这也是我的问题。我使用 Visual Studio C# 2010 Express 中的“.NET”选项卡添加了我的引用。我认为出现的原始文件可能只来自Net35 目录。请注意“添加引用”对话框中的 Path。当我从IronPython 2.7\Platforms\Net40 添加它们时,构建成功,两组程序集现在都出现在添加引用的.Net 选项卡上。 (以前可能也是这样,只是没注意到)。
      【解决方案3】:

      Microsoft.CSharp.dll 包含 C# 编译器的动态部分。每当您在代码中使用dynamic 时,都需要对其进行引用。我对 MonoDevelop 不熟悉,但您可能必须将目标框架设置为 4.0,并在项目中添加对 Microsoft.CSharp.dll 的引用(可能右键单击项目,“添加引用”,找到 Microsoft. CSharp)。

      我的猜测是您使用的项目是使用 VS 的预发布版本创建的,并且缺少正确的引用。

      【讨论】:

      • 嗨,这正是我所拥有的:Framework 4.0,正如您在图片中看到的那样,Microsoft.CSharp 已经在我的参考资料中;这就是我不理解这个错误的原因。 Microsoft.CSharp 被添加到参考中,它仍然说没有它我无法编译...你认为还应该添加其他程序集以使其工作吗?
      • 哦,我错过了图片中的那个。我不确定那会发生什么。这可能是 MonoDevelop 的问题。
      • 您可以在下面找到我的解决方案。我想我从平台添加了错误的程序集。 IronPython 2.7.0 没有遇到这样的问题,所以我切换了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多