编译dynamicexpression式所需的一个或多个types无法find。 您是否缺less对Microsoft.CSharp.dll和System.Core.dll的引用?

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

using System; using System.Globalization; class main { static void Main() { dynamic d; d = "dyna"; Console.WriteLine(d); } } 

但我得到这两个错误

错误1预定义types“Microsoft.CSharp.RuntimeBinder.Binder”未定义或导入

错误2无法find编译dynamicexpression式所需的一个或多个types。 您是否缺less对Microsoft.CSharp.dll和System.Core.dll的引用?

我读了这篇文章,但我是C#的新手,我不明白究竟是什么问题。 尤其是什么和这些所谓的.config文件在哪里?

在您的解决scheme资源pipe理器窗口上,右键单击引用,select添加引用,转到.NET选项卡,查找并添加Microsoft.CSharp。

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

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

我有同样的问题,除了删除和添加参考返回没有修复错误,所以我把.Net版本从4.5更改为4.5.1

为了达到这个目的,进入你的web.config文件,改变下面几行

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

对此

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

并重build。

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

我有同样的问题,并通过从项目中删除“Microsoft.CSharp”引用,然后再次添加它解决它。

对我来说,删除并重新添加对Microsoft.CSharp的引用可以暂时解决问题,直到编辑了受影响的文件。 closuresVisual Studio并重新打开该项目可以更长期地解决这个问题,如果在Microsoft.CSharp已经被引用的情况下出现这种情况,那么这是一个选项。

也许重新启动IDE作为第一步似乎微不足道,但这里提醒像我这样的人谁不认为这是第一件事。

这些都没有为我工作。

我的类库绝对都是引用System.Core和Microsoft.CSharp。 Web应用程序是4.0,由于支持问题,无法升级到4.5。

我遇到了使用Razor Engine编译剃刀模板的错误,而且只是间歇性地遇到它,就像在Web应用程序重新启动之后一样。

为我工作的解决scheme是手动加载程序集,然后重新尝试相同的操作…

  bool retry = true; while (retry) { try { string textTemplate = File.ReadAllText(templatePath); Razor.CompileWithAnonymous(textTemplate, templateFileName); retry = false; } catch (TemplateCompilationException ex) { LogTemplateException(templatePath, ex); retry = false; if (ex.Errors.Any(e => e.ErrorNumber == "CS1969")) { try { _logger.InfoFormat("Attempting to manually load the Microsoft.CSharp.RuntimeBinder.Binder"); Assembly csharp = Assembly.Load("Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); Type type = csharp.GetType("Microsoft.CSharp.RuntimeBinder.Binder"); retry = true; } catch(Exception exLoad) { _logger.Error("Failed to manually load runtime binder", exLoad); } } if (!retry) throw; } } 

希望这可能会帮助别人。

如果你错过了,Microsoft.CSharp.dll会出现这个错误。 检查你的项目参考。