私は、アプリケーションMyApplicationによって消費されるapi、MyApiを持っています。.NETアセンブリのバインド
MyApiには、.NET 4.0クライアントプロファイルを対象とする複数のdllがあります。例えば:
- MyApi.Core
- MyApi.Domain MyApi.Providers
(よりすこし)
展開簡略化のため、これらは
にILMergedれます- MyApi.ClientProfile
すべてのMyApis dllは強力な名前が付けられています。
MyApplication内のすべてのプロジェクトはMyApi.ClientProfileを参照しています。
私は今、いくつかのWeb機能をMyApiに追加しています。そこで、.NET 4.0 Extended Profileを対象とした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.Webはロードに失敗します(理由だけMyApi.ClientProfile存在する)。
MyApiアセンブリの名前がすべて強く、失敗するため、アセンブリ解決イベントを処理できず、MyApi.Core/MyApi.DomainからMyApi.ClientProfileへの要求をリダイレクトできません。
MyApi.ClientProfileは.NET 4.0クライアントプロファイル(MyApi.WebはSystem.Webなどへの参照があります)に対してサポートされる必要があるため、MyApi.WebをMyApi.ClientProfileにマージすることはできません。
MyApi.WebをMyApi.ClientProfileを参照するように変更した場合、これはこの1つのケースでは機能するはずですが、別のアプリケーションがMyApi.CoreとMyApi.Domainを直接参照するため動作しないため理想的ではありません。
MyApplication.Webに設定でbypassTrustedAppStrongNamesを指定させたくありません(この設定をMyApi.Webから何らかの形で受け入れることは、受け入れられるオプションかもしれません....)。
だから、私はこの問題の適切な/エレガントな解決策を考えている。
提案がありますか?
ありがとうございました。