1

2 つのリンクされたプロジェクトとリンクされたファイルの手法を使用して、.Net Framework と Silverlight の間で共有しているクラス ライブラリがあります。

それを単一のポータブル クラス ライブラリに変換したいのですが、2 つの間で異なるコードが 1 つあります。現在、条件付きコンパイラ ステートメントを使用して、この 1 つのファイルの実装を分離しています。

#if SILVERLIGHT
...
#else
...
#endif

これは PCL で尊重されますか?

また、Silverlight ではないコードの部分は、サードパーティの通常の .Net クラス ライブラリを参照します。PCL はまだコンパイルされますが、このリファレンスのために Silverlight で使用できません。PCL に .Net 用にのみ含めるように指示する方法はありますか?

4

1 に答える 1

1

このパターンは、実行時の移植性ではなく、コンパイル時の移植性を実装します。

大量のSilverlight固有のコードがある場合は、実際にはポータブルライブラリがありません。Silverlight固有のコードを別のアセンブリに分解し、その特殊なアセンブリにPCLへの依存関係を持たせることを検討する必要があります。

Silverlight固有のコードがほとんどない場合は、リフレクションを使用して、実行時にSilverlightの依存関係に動的にバインドすることを検討できます。PCLはどのような状況でも使用できますが、Silverlightが存在する場合はSilverlightに「正常にアップグレード」されます。

于 2012-02-01T04:43:20.877 に答える