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

C# 升级到Visual Studio 2012时,动态类型会中断,c#,asp.net-mvc,visual-studio,dynamic,visual-studio-2012,C#,Asp.net Mvc,Visual Studio,Dynamic,Visual Studio 2012,我有一个项目最初是使用VisualStudio2010和.NET4.0开发的。它是一个类库,实现了一个自定义MVC 3控制器,并使用了一个。如果我在Visual Studio 2012 RTM中打开项目,而不对项目进行任何更改,则在动态类型上会出现以下错误: 找不到编译动态表达式所需的一个或多个类型。您是否缺少推荐人? 我还遇到另一个错误,即: 缺少所需的编译器成员“Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember” 它们似乎是相关的问题。我不

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

找不到编译动态表达式所需的一个或多个类型。您是否缺少推荐人?

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

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


它们似乎是相关的问题。我不知道为什么VisualStudio2012会感到困惑。Microsoft.CSharp程序集位于引用中。如果我在VisualStudio2010中再次打开该项目,它会编译得很好。有人遇到过这个问题并知道解决方案吗?

答案是在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 2012在这方面有问题,而VS 2010没有。或者它为什么会导致这些模糊的错误。

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