C#动态类型打破当升级到Visual Studio 2012(C# Dynamic Types Br

2019-09-23 16:50发布

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

编译一个动态表达所需的一个或多个类型不能被发现。 是否缺少一个参考?

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

缺少编译器要求会员“Microsoft.CSharp.RuntimeBinder.Binder.InvokeMember”

他们似乎是相关的问题。 我不知道为什么的Visual Studio 2012是迷茫的。 该Microsoft.CSharp组件处于引用。 如果我在Visual Studio 2010中再次打开该项目它编译就好了。 有没有人碰到这个问题,并知道解决办法呢?

Answer 1:

在我的情况下,参考Microsoft.CSharp装配失踪。 试图用JSON.NET,动态类型和Visual Studio 2012,当我得到这个错误。



Answer 2:

答案竟然是在任何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没有。 为什么它造成的模糊的错误。



文章来源: C# Dynamic Types Break When Upgrading to Visual Studio 2012