繁体   English   中英

定期看到ASP.NET错误CS0656:缺少编译器所需的成员

[英]Periodically seeing the ASP.NET error CS0656: Missing compiler required member

我看到我的网络应用程序偶尔会出现以下错误(看似随机)。 我们正在运行Windows Server 2008R2,IIS 7.5,MVC3,.NET 4.5。

编译错误

每次都是同样的错误: CS0656:缺少编译器需要成员'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'

发生此错误时,可能需要从重新启动应用程序池到重新安装应用程序本身,以修复它。

该错误发生在全新的VM映像(以前没有安装我们的软件),以及之前安装了我们软件的计算机上。 第一次运行应用程序时,或者应用程序已经足够长时间以便IIS应用程序池回收工作进程(看起来如此)时,可能会发生此错误。

这变得非常难以处理,因为我已经对这个错误进行了大量的研究,并尝试了多种解决方案,没有运气。 此外,发生错误的随机频率使得故障排除非常困难。 任何对这个问题的见解,或对可能的解决方案的想法,将不胜感激。 我愿意在这一点上尝试几乎所有的东西。

这看起来很熟悉。 如果我回想起corectly我必须删除bin目录并重建,因为旧版本的dll浮动并且这个类是在.net 4.0中引入的

经过一些研究,该网站似乎同意: http//our.umbraco.org/forum/using/ui-questions/20474-Missing-compiler-required-member-MicrosoftCSharpRuntimeBinderBinderInvokeMember

试试Forest Cheng答案:

你的.NET Framework是什么版本的? ASP.NET MVC 3运行时组件需要.NET Framework版本4和Visual Studio 2010或Visual Web Developer 2010 Express。 想了解更多信息,请查看ASP.NET MVC 3发行说明

编译器错误CS0656可能由以下问题引起:

  1. 您的公共语言运行库的安装已损坏。

  2. 您有一个对程序集的引用,该程序集定义了在公共语言运行库中也可以找到的类型。 但是,程序集的类型未按C#编译器所期望的方式定义。

因此,请检查您的引用,以确保您使用的是公共语言运行库的正确版本。

我们曾经在很久以前使用.net 1及更高版本的那一天随机发生这些编译错误。 这需要删除临时asp.net文件夹的内容,并找到其他流氓dll,甚至在visual studio缓存中。 通常,刷新临时的asp.net文件夹就可以了。

确保你找到所有的dll - bin文件夹太明显了,并记住dll是从shadow目录执行的。 这就是为什么我记得(也来自远距离的记忆)有一个连接到默认appdomain的程序集被加载到,特别是如果你然后加载“相同的程序集”但从不同的文件位置。

确保在项目中添加了Microsoft.CSharp引用。

我将它添加到我的测试项目中,错误消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM