2017-01-11 8 views
0

私はいくつかのdllをexeでビルドするWinCE6上で.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ファイル内に構築されるように)Testクラスを取り、メインプロジェクトに直接それを置く場合は、すべてが正常に動作します

...

誰もが何が起こっているの任意のアイデアを持っていますか?

+1

メッセージにバージョン2.0が表示されていますが、.NET Compact Framework v2.0がv3.5ではなくデバイスにインストールされている可能性があります。 –

+0

デバイス上でcgacutil.exeを実行するとコンパクトなフレームワーク3.5がインストールされていることがわかります – salvolds

+0

@Valter:正しくはバージョンの問題です:3.5クラスライブラリproejctは、システムアセンブリ2.0を参照していましたが、exeが正しいシステムアセンブリを参照していました3.5。参照を置き換えて、すべて正常に動作します – salvolds

答えて

1

インストールされているコンパクトフレームワークが3.5の場合、クラスライブラリプロジェクトはシステムコンポーネントバージョン2.0を参照しています。

デプロイ時に、システムコンポーネント2.0がデプロイされましたが、CF 3.5でデプロイできませんでした。 ライブラリプロジェクトのシステムバージョン3.5への参照がすべて正常に機能するように修正されました。

関連する問題