【问题标题】:System.MissingMethodExceptionSystem.MissingMethodException
【发布时间】:2017-01-11 13:54:38
【问题描述】:

我正在 WinCE6 上开发一个 .NET CF 3.5 应用程序,它将构建一个 exe 和一些 dll。我在类库项目中定义了一个这样的示例类:

using System.ComponentModel;
using System;

namespace Utils
{
    public static class Test
    {
        public static void runTest()
        {
            Exception e = new Win32Exception(0, "CreateToolhelp32Snapshot error.");
        }
    }

}

我将在我的主要可执行项目中调用runTest() 方法。在编译时一切都很好。但是在运行时尝试调用runTest()时会抛出以下异常:

System.MissingMethodException

{"The version of the assembly System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089 cannot be loaded by this version of the Microsoft .NET Compact Framework."}

通过在调试中运行并在runTest() 中设置断点,我可以看到没有输入该方法...此外,如果我在创建异常之前添加了一些额外的纯代码,则永远不会输入该方法并抛出异常。

但是,如果我采用 Test 类并将其直接放在主项目中(以便将其构建在 exe 中),一切正常...

有人知道发生了什么吗?

【问题讨论】:

  • 只是猜测,但我在消息中看到 2.0 版,可能是您的设备上安装了 .NET CF 2.0 版而不是 v 3.5?
  • 如果我在设备上运行 cgacutil.exe,它显示已安装紧凑框架 3.5
  • @Valter:但你是对的,这是一个版本问题:3.5 类库 proejct 引用了系统程序集 2.0,而 exe 引用了正确的系统程序集 3.5。刚刚替换了参考,一切正常

标签: c# .net compact-framework windows-ce


【解决方案1】:

类库项目引用系统组件版本 2.0,而安装的紧凑框架为 3.5。

在部署时系统组件 2.0 已部署,但 CF 3.5 无法加载它。 修复了库项目中对系统版本 3.5 的引用,一切正常。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多