我有一个 API MyApi,它由应用程序 MyApplication 使用。
MyApi 有几个针对 .NET 4.0 客户端配置文件的 dll。例如:
- MyApi.Core
- MyApi.Domain
- MyApi.Providers
(还有更多)
为了部署简单,这些被ILMerged到
- MyApi.ClientProfile
所有 MyApis dll 都是强命名的。
MyApplication 中的所有项目都引用了 MyApi.ClientProfile。
我现在正在向 MyApi 添加一些 Web 功能,因此我添加了一个针对 .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.Web 将无法加载,因为它找不到 MyApi.Core 或 MyApi.Domain(因为只有 MyApi.ClientProfile 存在)。
我无法处理程序集解析事件并将对 MyApi.Core/MyApi.Domain 的请求重定向到 MyApi.ClientProfile,因为 MyApi 程序集都是强命名的,这将使其失败。
我无法将 MyApi.Web 合并到 MyApi.ClientProfile 中,因为 .NET 4.0 客户端配置文件应该支持 MyApi.ClientProfile(并且 MyApi.Web 引用了 System.Web 等)。
如果我将 MyApi.Web 更改为引用 MyApi.ClientProfile,这应该适用于这种情况,但并不理想,因为它不适用于直接引用 MyApi.Core 和 MyApi.Domain 的另一个应用程序。
我不想强制 MyApplication.Web 在其配置中指定 bypassTrustedAppStrongNames (认为直接从 MyApi.Web 以某种方式启用此设置可能是一个可接受的选项......)。
所以,我一直在想一个合适/优雅的解决方案来解决这个问题。
有什么建议么?
谢谢。