2

.net 4.0 クライアント プロファイル (CP) を使用する .dll を開発しています。ただし、.dll とリンクしたい .dll もあり、別の .dll (DotNetOpenAuth) は System.Web を使用しているため、クライアント プロファイルと互換性がありません。

CP 互換プロジェクトで非 CP .dll を参照できないことはわかっています。問題は、これをどのように行うことができるかです:)一見しただけでは多くのことが不可能であることはわかっていますが、微調整が必​​要ですか?..

CP をターゲットとするプロジェクトが非 CP .dll にリンクしているという警告がコンパイラから出されない理由がわかりません。このように動作する場合、DotNetOpenAuth を利用する機能が呼び出されない限り、ほとんどの場合に動作する CP 互換の .DLL を持つことができます。

簡単に言えば、CP 互換性チェックをコンパイル時から実行時に移動したいと考えています。これは、私の .dll には多くの機能があり、ほとんどの人は DotNetOpenAuth を必要とする部分を使用しないためです。DotNetOpenAuth が必要な人は、完全な .net フレームワークを使用する必要があります。しかし、これは他の人にとって目立たないものであってはなりません。

コンパイル時のチェックを実行時に移動できるようにする AllowPartiallyTrustedCallersAttribute のようなものを意味します。

.dll の 2 つの個別のバージョン (Web アプリ用とクライアント プロファイル用) を維持したくありません。ユーザーがどの .dll を選択するかが複雑になるからです。私は物事をシンプルに保つことを好みます。

もちろん、リフレクションによって .dll を動的にロードする方法もありますが、これには実行中のコードからの非常に高い特権が必要です (Web アプリの場合、これには十分な特権がない可能性があります)。

4

0 に答える 0