0

2 種類のマシンで実行される一般的なコードがいくつかあります。

  • サーバー タイプのマシンでの .NET 2.0 フル フレームワーク
  • Windows CE デバイス上の .NET 2.0 Compact Framework

フル フレームワーク デバイスに追加される機能がありますが、そのコードはコンパクト フレームワーク デバイスでは実行されません。

参照されている dll を Windows CE デバイスに配布する必要はありますか?

考えた後、コードは別のファイルにあるため、Windows CE ソリューションからファイルを省略しますが、上記の質問に技術的な観点から回答してもらいたいと思います。

マーク

4

2 に答える 2

0

アーリー バインディング (プロジェクトを右クリック -> [参照の追加]) を使用してライブラリを参照する場合は、コードと共に配布する必要があります。これは、コードのメタデータが参照されているライブラリを参照しているためです。参照されたライブラリが同じ方法で他のライブラリを参照している場合、問題をさらに興味深いものにするために、CLR がそれらを見つけてロードできるようにする必要があります。

ただし、リフレクションや検出などの手法を使用して実行時にバインディングを実行すると、コードが必要になるまで (リフレクションを介して呼び出す) CLR がライブラリを見つけることができずに、アプリケーションを読み込むことができます。

于 2013-06-27T03:11:11.410 に答える
0

時々コードを使用する場合でも、実際には必要ありません:-) たとえば、定数または列挙型を使用する場合、列挙型を使用するコードを使用しない限り、dll は必要ありません。したがって、一般に、実行されていないコードがある場合、dll を配布することはできません。ただし、コードが次のような場合、typeloadexception が発生することがあります。

if (condition)
  use type from another library
else
 use type from current library

条件がコンパイルに依存しない定数である場合、JITer は正しい仮定を行わない可能性があり、そのコードは実行されず、型をロードしようとすると例外が発生します。そのような場合、このように条件付きコンパイルを使用します

#if COMPACT
//use type here
#else
//not use type here
#endif
于 2013-08-14T11:20:58.617 に答える