什么会导致以下异常?
System.MissingMethodException Int32 System.Environment.get_CurrentManagedThreadId()
此方法调用似乎是由 C# 编译器生成的,用于产生 IEnumerable<>
的方法.
安装了 .NET Framework v4.0 x86 并为 v4.0 Any CPU 编译了二进制文件。
最佳答案
CurrentManagedThreadId
是 .NET 4.5 属性,因此您需要 4.5 才能运行代码。
参见 Iterator blocks, missing methods, and .NET 4.5分析这个问题是如何发生的。
简而言之:
如果您在安装了 .NET 4.5 的系统上构建您的应用程序(针对 .NET 4.0),它将使用 4.5 作为编译的基础,因为 .NET 4.0 Framework 总是被 .NET 4.5 覆盖。
如果您的应用程序随后还使用 yield return
,它将在仅安装 4.0 的系统上失败,因为此语句的实现在为 4.5 Framework 编译时使用了一个新属性。
要解决它,请确保您的编译器系统具有 4.0 引用程序集。
关于c# - System.MissingMethodException Int32 System.Environment。 get_CurrentManagedThreadId() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569664/