2012-10-08 36 views
2

我有一个最初使用Visual Studio 2010与.Net 4.0开发的项目。它是一个实现自定义MVC 3控制器的类库,它使用了一个dynamic type。如果我打开在Visual Studio 2012 RTM的项目,而不进行任何更改到项目中,我得到的动态类型以下错误:升级到Visual Studio 2012时C#动态类型中断

编译动态表达所需

一个或多个类型不能被发现。你错过了一个参考吗?

我也越来越另一个错误,那就是:

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

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

回答

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的AA副本在被引用的包中。我删除了这些引用,并引用全局程序集中的版本,一切正常。不知道为什么VS 2012在VS 2010中没有出现问题。或者为什么它导致了模糊的错误。

2

在我的情况下引用到Microsoft.CSharp程序集丢失。尝试使用JSON.NET,动态类型和Visual Studio 2012时出现此错误。

相关问题