我有一个api MyApi,它被应用程序MyApplication使用。.NET程序集绑定
MyApi有针对性的.NET 4.0客户端配置文件的几个dll文件。例如:
- MyApi.Core
- MyApi.Domain
- MyApi.Providers
(和一些更多)
用于部署简单起见,这些被ILMerged成
- MyApi.ClientProfile
所有MyApis的DLL强命名。
MyApplication中的所有项目引用MyApi.ClientProfile。
我现在将一些网页功能添加到MyApi中,所以我添加了一个dll MyApi.Web,它是针对.NET 4.0 Extended Profile的。 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中,因为MyApi.ClientProfile应该支持.NET 4.0 Client Profile(并且MyApi.Web引用了System.Web等)。
如果我将MyApi.Web更改为引用MyApi.ClientProfile,它应该适用于这种情况,但并不理想,因为它不会为另一个应用程序直接引用MyApi.Core和MyApi.Domain而工作。
我不想强制MyApplication.Web在其配置中指定bypassTrustedAppStrongNames(认为直接从MyApi.Web启用此设置可能是一个可接受的选项....)。
因此,我一直在想这个问题的合适/优雅的解决方案。
有什么建议吗?
谢谢。