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

use*_*138 285 .net c#

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

using System;
using System.Globalization;


class main
{
    static void Main()
    {

        dynamic d;
        d = "dyna";
        Console.WriteLine(d);    
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这两个错误

错误1未定义或导入预定义类型"Microsoft.CSharp.RuntimeBinder.Binder"

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

我读了这篇文章,但我是C#的新手,我无法理解究竟是什么问题.特别是这些所谓的.config文件是什么和在哪里..

M. *_*ara 584

您的解决方案资源管理器窗口,右键单击要引用,选择Add Reference,转到.NET选项卡,找到并添加Microsoft.CSharp.

  • 我已经引用了我还有这个错误.我在VS 2010中创建了一个新的ASP.Net MVC4应用程序.难倒,我删除并重新读取它,错误就消失了.清洁/重建没有帮助. (26认同)
  • Visual Studio团队应该考虑让人们将鼠标悬停在错误上然后选择"将Microsoft.CSharp添加到引用" (13认同)
  • @Geoyws一个字:ReSharper. (8认同)
  • @ user2864740通常,Reshaper会执行此操作。但是在这种情况下,ReSharper不会显示任何内容。 (2认同)

Chr*_*ain 21

确保您的项目针对.NET framework 4.0.Visual Studio 2010也支持.NET 3.5框架目标,但.NET 3.5不支持该dynamic关键字.

您可以在项目属性中调整框架版本.见http://msdn.microsoft.com/en-us/library/bb398202.aspx获取更多信息.


wch*_*ard 7

我有同样的问题,除了删除和添加引用后没有修复错误,所以我将.Net版本更改4.54.5.1.

要实现此目的,请转到您的web.config文件并更改以下行

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
Run Code Online (Sandbox Code Playgroud)

对此

<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
Run Code Online (Sandbox Code Playgroud)

并重建.


Rom*_*man 6

ViewBag下面的红线是我头痛的3个月).只需从项目中删除Microsoft.CSharp引用,然后再次添加.

  • 这对我来说不起作用,即使我的ViewBag系列中也有红线 (3认同)