System.MissingMethodException Int32 System.Environment.get_CurrentManagedThreadId()

TN.*_*TN. 36 c# .net-4.0

什么可能导致以下异常?

System.MissingMethodException Int32 System.Environment.get_CurrentManagedThreadId()
Run Code Online (Sandbox Code Playgroud)

这个方法调用似乎是由C#编译器生成的方法生成的IEnumerable<>.

安装了.NET Framework v4.0 x86,并为v4.0任何CPU编译二进制文件.

flo*_*ele 52

CurrentManagedThreadId是.NET 4.5属性,因此您需要4.5来运行代码.有关如何发生此问题的分析,请参阅Iterator块,缺少方法和.NET 4.5.

简而言之:

如果在安装了.NET 4.5的系统上构建应用程序(针对.NET 4.0),它将使用4.5作为编译的基础,因为.NET 4.0始终被.NET 4.5覆盖.

如果您的应用程序也使用yield return,它将在仅安装4.0的系统上失败,因为此语句的实现在为4.5 Framework编译时使用新属性.

要解决此问题,请确保您的编译器系统具有4.0参考程序集.