アプリケーション MyApplication によって消費される API MyApi があります。
MyApi には、.NET 4.0 クライアント プロファイルを対象とするいくつかの dll があります。例えば:
- MyApi.Core
- MyApi.ドメイン
- MyApi.プロバイダー
(およびその他)
展開を簡単にするために、これらは ILMerged に組み込まれています
- MyApi.ClientProfile
すべての MyApis dll には厳密な名前が付けられています。
MyApplication のすべてのプロジェクトは MyApi.ClientProfile を参照します。
現在、いくつかの Web 機能を MyApi に追加しているため、.NET 4.0 拡張プロファイルをターゲットとする dll MyApi.Web を追加しました。MyApi.Web は、MyApi.Core と MyApi.Domain (および System.Web dll) を参照します。
MyApplication.Web プロジェクトもあります。MyApplication の他のプロジェクトを参照します (MyApi.ClientProfile dll への参照があります)。MyApplication.Web プロジェクトは MyApi.Web dll を参照する必要があります。
これどうやってするの?
MyApplication.Web から MyApi.Core と MyApi.Domain への参照を追加すると、MyApplication.Web の複数のアセンブリに存在する型が存在します。
MyApplication.Web から MyApi.Core および MyApi.Domain への参照を追加しないと、MyApi.Core または MyApi.Domain が見つからないため (MyApi.ClientProfile のみが存在するため)、MyApi.Web はロードに失敗します。
アセンブリ解決イベントを処理できず、MyApi.Core/MyApi.Domain の要求を MyApi.ClientProfile にリダイレクトできません。これは、MyApi アセンブリがすべて厳密な名前であり、失敗するためです。
MyApi.Web を MyApi.ClientProfile にマージできません。これは、MyApi.ClientProfile が .NET 4.0 クライアント プロファイルでサポートされている必要があるためです (また、MyApi.Web には System.Web などへの参照が含まれています)。
MyApi.Web を MyApi.ClientProfile を参照するように変更すると、この 1 つのケースでは機能するはずですが、MyApi.Core と MyApi.Domain を直接参照する別のアプリケーションでは機能しないため、理想的ではありません。
MyApplication.Web にその構成で bypassTrustedAppStrongNames を指定するように強制したくありません (MyApi.Web から何らかの方法でこの設定を直接有効にすることは、受け入れられるオプションかもしれません....)。
だから、私はこの問題に対する適切でエレガントな解決策を考えています。
助言がありますか?
ありがとう。