立即窗口中的动态导致未定义“ Microsoft.CSharp.RuntimeBinder.Binder”或导入错误


68

如果我dynamic在Visual Studio的即时窗口中使用,则会收到错误消息

未定义或导入预定义类型“ Microsoft.CSharp.RuntimeBinder.Binder”

我该如何解决?


我知道您的问题已经很久以前问过了,但是请检查我的回答是否解决了这个问题,也可以帮助其他人解决这个问题。
马特

Answers:


120

您应该在所选项目或启动项目中添加对Microsoft.CSharp库的引用。并且您的项目应参考.NET Framework 4或更高版本。

关于即时窗口上下文的MSDN:

建立设计时表达式评估的上下文时,Visual Studio会在解决方案资源管理器中引用当前选定的项目。如果在解决方案资源管理器中未选择任何项目,则Visual Studio会尝试针对启动项目评估功能。如果无法在当前上下文中评估该函数,您将收到一条错误消息。


1
我怎么做?我使用的是“即时窗口”
Panic Panic 2012年

您在某些项目的环境中使用即时窗口。您应该添加对该项目的引用。
HoberMellow 2012年

这也适用于调试监视窗口。我曾与这并启动项目的解决方案引用Microsoft.CSharp,但引用的另一个项目。监视窗口将引发“未定义或导入活页夹”异常。在启动项目上添加了对Microsoft.CSharp的引用,一切都很好。
Snixtor

5
在当前选定的项目中引用它似乎不起作用。我在引用System.Data时遇到了同样的问题,但无法通过即时窗口找到。可能仅在调试会话期间有效吗?我正在使用它来调用静态方法,而无需启动调试会话。
路易·萨默斯

21

有两点很重要。检查以下内容:

  1. 您的项目属性引用的是.NET Framework 4或更高版本(如果不是这种情况,请更改它:右键单击项目,选择“属性...”菜单项,然后选择“ .NET Framework 4作为目标框架” “ (或更高))
  2. 您已添加“ Microsoft.CSharp”程序集作为参考(请注意,必须先完成步骤1,该步骤要求重新加载项目,然后才能执行此操作)

之后,您可以使用该dynamic类型。需要将引用添加到所选项目或启动项目中,以便在即时窗口的范围内可用。


注意: 在这里,我找到了一篇不错的文章,介绍C#中的动力学,它如何工作以及如何使用它。


1
投了赞成票,挂断了没有引用“ Microsoft.CSharp”程序集的单元测试项目
Lazy Coder


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.