我试图在Microsoft Visual c# 2010中编译此代码

using System;
using System.Globalization;


class main
{
    static void Main()
    {

        dynamic d;
        d = "dyna";
        Console.WriteLine(d);    
    }
}

但是我得到了这两个错误

错误1预定义类型“Microsoft.CSharp.RuntimeBinder”。没有定义或导入Binder

错误2无法找到编译动态表达式所需的一个或多个类型。您是否缺少对Microsoft.CSharp.dll和System.Core.dll的引用?

我读了另一篇文章,但我是c#的新手,我不明白真正的问题是什么。特别是这些所谓的。config文件是什么,在哪里。


当前回答

对我来说,删除并重新添加对微软的引用。CSharp暂时修复了这个问题,直到受影响的文件被编辑。关闭Visual Studio并重新开放项目将使其更加长期,所以如果这种情况发生在Microsoft。CSharp已经被引用了。

也许重新启动IDE作为第一步看起来微不足道,但是对于像我这样不认为这是第一件事的人来说,这里有一个提醒。

其他回答

如果错过,则会发生此错误。检查你的项目参考资料。

ViewBag下面的红线让我头疼了3个月)。 去掉微软就行了。CSharp引用项目,然后再添加它。

对我来说,删除并重新添加对微软的引用。CSharp暂时修复了这个问题,直到受影响的文件被编辑。关闭Visual Studio并重新开放项目将使其更加长期,所以如果这种情况发生在Microsoft。CSharp已经被引用了。

也许重新启动IDE作为第一步看起来微不足道,但是对于像我这样不认为这是第一件事的人来说,这里有一个提醒。

我也遇到了同样的问题,我把“微软”去掉了。CSharp”引用,然后再次添加。

我也遇到了同样的问题,只是删除和添加引用并没有修复这个错误,所以我把. net版本从4.5更改为4.5.1。

要实现这一点,请访问您的web。配置文件并更改以下行

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

这个

<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />

和重建。