11

我在我的 Web 应用程序上偶尔(似乎是随机地)出现以下错误。我们正在运行 Windows Server 2008R2、IIS 7.5、MVC3、.NET 4.5。

编译器错误

每次都是同样的错误:CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.BinaryOperation'

发生此错误时,它可以采取任何措施,从重新启动应用程序池到重新安装我们的应用程序本身,再进行修复。

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

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

4

4 回答 4

3

这看起来很熟悉。如果我没记错的话,我不得不删除 bin 目录并重新构建,因为旧版本的 dll 到处都是,而且这个类是在 .net 4.0 中引入的

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

于 2013-04-12T14:26:59.887 回答
0

试试林诚答案:

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

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

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

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

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

于 2013-04-08T18:58:38.343 回答
0

我们曾经在很久以前的 .net 1 及更高版本中随机出现这些编译错误。这需要删除临时 asp.net 文件夹的内容,并找到其他流氓 dll,即使在 Visual Studio 缓存中也是如此。通常,刷新临时 asp.net 文件夹即可。

确保找到所有 dll - bin 文件夹太明显,并记住 dll 是从影子目录执行的。这就是为什么我记得(也来自遥远的记忆)与加载程序集的默认 appdomain 的连接,特别是如果您随后从不同的文件位置加载“相同的程序集”。

于 2013-05-08T02:11:34.493 回答
0

确保在项目中添加了 Microsoft.CSharp 参考。

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

于 2018-07-06T08:01:15.707 回答