2017-01-11 1 views
0

WinCE6에서 일부 DLL을 exe로 빌드 할 .NET CF 3.5 응용 프로그램을 개발 중입니다. 나는 클래스 라이브러리 프로젝트에서이 같은 예를 들어 클래스를 정의 :System.MissingMethodException

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()에 중단 점을 설정함으로써 ... 또한 내가 몇 가지 추가를 넣어 경우 예외 생성 전에 일반 코드는 메소드가 입력되지 않고 예외가 발생합니다. 내가 테스트 수업을하고 (이 EXE 파일 내부에 내장 될 수 있도록) 모든 것이 잘 작동 주요 프로젝트에 직접 넣어 그러나 경우

...

이 사람이 무슨 일이 일어나고 있는지 어떤 생각을 가지고 있습니까?

+1

그냥 추측하지만 메시지에 버전 2.0이 있습니다. .NET Compact Framework 버전 2.0이 v 3.5 대신 장치에 설치되어있을 수 있습니다. –

+0

장치에서 cgacutil.exe를 실행하면 콤팩트 프레임 워크 3.5가 설치되었음을 나타냅니다. – salvolds

+0

@Valter :하지만 버전 문제 일 수 있습니다. 3.5 클래스 라이브러리 proejct가 exe가 올바른 시스템 어셈블리를 참조하는 동안 시스템 어셈블리 2.0을 참조했습니다. 3.5. 그냥 참조를 교체하고 모든 것이 잘 작동합니다. – salvolds

답변

1

설치된 소형 프레임 워크가 3.5 인 동안 클래스 라이브러리 프로젝트는 시스템 구성 요소 버전 2.0을 참조합니다.

배포시 시스템 구성 요소 2.0이 배포되었지만 CF 3.5에서로드 할 수 없습니다. 라이브러리 프로젝트의 시스템 버전 3.5에 대한 참조가 모두 정상적으로 수정되었습니다.

관련 문제