升级到Visual Studio 2012时,C#动态类型中断

时间:2012-10-08 13:39:49

标签: c# asp.net-mvc visual-studio dynamic visual-studio-2012

我有一个项目最初是使用Visual Studio 2010和.Net 4.0开发的。它是一个实现自定义MVC 3控制器的类库,它使用dynamic type。如果我在Visual Studio 2012 RTM中打开项目,而不对项目进行任何更改,则会在动态类型上出现以下错误:

无法找到编译动态表达式所需的一种或多种类型。你错过了参考文献吗?

我还得到另一个错误,即:

缺少编译器所需的成员'Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember'

他们似乎是相关的问题。我不确定为什么Visual Studio 2012会混淆。 Microsoft.CSharp程序集位于参考中。如果我在Visual Studio 2010中再次打开项目,它编译就好了。有没有人遇到过这个问题并知道解决方案?

2 个答案:

答案 0 :(得分:2)

在我的案例中,缺少对Microsoft.CSharp程序集的引用。尝试使用JSON.NET,动态类型和Visual Studio 2012时出现此错误。

答案 1 :(得分:1)

在VS 2010和2012年编制时,答案结果出现了警告。警告是:

预定义类型'System.Runtime.CompilerServices.CallSite'在全局别名中的多个程序集中定义;使用'.. \ IronJS.Core.0.2.0.1 \ lib \ net40 \ Microsoft.Scripting.Core.dll'的定义

该项目使用了IronJS,并在其包中引用了一份Microsoft.Scripting和Microsoft.Dynamic。我删除了这些引用并引用了全局程序集中的版本,一切正常。当VS 2010没有这个时,不确定为什么VS 2012有这个问题。或者为什么它会导致模糊的错误。