-1

.net 4.5 コンソール アプリ、Windows ストア アプリ、Windows Phone 8 など、さまざまなプロジェクトに使用できるライブラリを作成することにしました。私のライブラリはソケット プログラミングを行っており、通常の 4.5 の場合は TcpClient を使用します.

最初の (想定) ステップは、Portable Lib を作成することですが、TcpClient がそこでサポートされていないため、これはすぐに終了します。

そのようなライブラリを作成するための通常のアプローチは何ですか? 乗算ターゲットに使用できるライブラリを作成するための最初のステップは何ですか?

4

2 に答える 2

1

非常によく知られている問題。

この問題を回避する方法がいくつかあります。

  1. 共有コード ファイルは、関連するプロジェクトのリンクに追加する必要があります。変更できる方法は一度だけで、すべての依存プロジェクトに影響します。もちろん、その場合、すべての依存プロジェクトを再構築する必要があることに注意してください。依存プロジェクトを右クリックし、[追加] -> [既存のアイテム] を選択します。ダイアログ フォームで [追加] ボタンをドロップダウンし、[リンクとして追加] を選択します。異なるプラットフォームを区別するために、いくつかのC# プリプロセッサ ディレクティブを使用する必要があります。たとえば、Windows 8 では一部の名前空間と API が異なる場合があります。

  2. 型を拡張するには、部分クラスと継承を使用します。たとえば、メソッドの 1 つがインターネットからファイルをダウンロードしてローカルに保存するタイプがあるとします。Windows 8 と Windows Phone では API が異なる (実際には違います) と仮定して、共通ファイルでプライベート メソッドの減速を使用して型を作成し、関連するすべてのプロジェクトでそのメソッドを実装する部分クラスを作成できます (1 つの部分クラス)。 Windows Phone の場合、Windows 8 の場合は 1 つの部分クラスであり、それぞれが関連するコンテキストで構築されます。部分クラスとメソッドの詳細については、こちらをお読みください

それが役立つことを願っています。

とにかく、特にあなたが使用したいと述べたTcpClient - 私の記憶が正しければ、ポータブルライブラリだけでなく、Windows Phoneでもサポートされていません:)

于 2012-12-18T22:53:43.223 に答える
0

互換性のないライブラリ ( TcpClientx86 でのみ利用可能など) の場合は、次のいずれかを行う必要があります。1) 両方のデバイスで動作する別のライブラリを見つけるか、2) 別のデバイスの代わりになるライブラリを見つけて、別のデバイスで適切なコードを実行するためのロジックを追加します。

この場合、それは関係なく、移植性はありません。1 つのデバイスは x86 で、もう 1 つは ARM です。ビルドを分けずに、両方で動作するライブラリを作成する方法はありません。そのため、コンパイラ マクロを使用して、それぞれに対してビルドするものを指定TcpClientし、x86 バージョンでは を使用し、ARM バージョンでは他のライブラリを使用することもできます。

于 2012-12-18T22:44:39.790 に答える