system.missingMethodException而

时间:2017-01-11 13:54:38

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

我正在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."}

通过在debug中运行并将断点设置为runTest()我可以看到该方法既未输入...另外如果我在创建异常之前放入一些额外的普通代码,则永远不会输入方法,异常是抛出。

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

有没有人知道发生了什么?

1 个答案:

答案 0 :(得分:1)

类库项目引用了System组件版本2.0,而安装的紧凑框架是3.5。

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