Reflection 在运行时或基于配置的预构建时在azure/on prem特定程序集之间切换

Reflection 在运行时或基于配置的预构建时在azure/on prem特定程序集之间切换,reflection,azure,architecture,azure-caching,appfabric-cache,Reflection,Azure,Architecture,Azure Caching,Appfabric Cache,我有一个wcf web服务,可以部署到azure或on-prem。 我正试图为这两种方案提供一个通用的代码库,但每个sceanrio都有不同的web.config。 问题是,当wcf服务部署在azure上时,它需要与azure缓存实例对话,如果部署在prem上,它将与windows app fabric缓存服务器对话。 与两者对话的代码保持不变,因为它们本质上是相同的缓存产品。 但是-如果wcf服务将与azure缓存通信,则项目应具有对以下程序集的引用: Microsoft.Applicatio

我有一个wcf web服务,可以部署到azure或on-prem。 我正试图为这两种方案提供一个通用的代码库,但每个sceanrio都有不同的web.config。 问题是,当wcf服务部署在azure上时,它需要与azure缓存实例对话,如果部署在prem上,它将与windows app fabric缓存服务器对话。 与两者对话的代码保持不变,因为它们本质上是相同的缓存产品。 但是-如果wcf服务将与azure缓存通信,则项目应具有对以下程序集的引用:

Microsoft.ApplicationServer.Caching.Core.dll (1.0.4817.0)
Microsoft.WindowsFabric.Common.dll (1.0.5627.0)
Microsoft.ApplicationServer.Caching.Client.dll (1.0.4817.0)
Microsoft.WindowsFabric.Data.Common.dll
Microsoft.ApplicationServer.Caching.AzureCommon.dll
Microsoft.ApplicationServer.Caching.AzureClientHelper.dll
如果代码必须在prem上与app fabric对话,则必须引用以下程序集

Microsoft.ApplicationServer.Caching.Core.dll (1.0.4632.0)
Microsoft.WindowsFabric.Common.dll (1.0.4619.0)
Microsoft.ApplicationServer.Caching.Client.dll (1.0.4632.0)
Microsoft.WindowsFabric.Data.Common.dll
我正在寻找一个解决方案,这样我就可以保持相同的代码库(.cs文件和.csproj),并且通过web.config中的配置开关,它应该引用正确的程序集, 例如,如果web.config中的“UseAzure=1”,则应引用并加载azure缓存客户端DLL,如果“UseAzure=0”,则应加载Prem DLL上的AF。 我想知道是否可以使用运行时C#代码或通过VisualStudio编译前/编译后任务实现这一点。 我愿意接受任何其他实现这一目标的想法。
有人能确认这两个选项的可行性吗?如果有,请给我指出一些类似的代码。

我相信您必须使用对所有程序集的引用进行构建,然后根据配置设置将依赖项注入配置为引用一组类型或另一组类型。我面临同样的问题,对于如何支持这个场景,似乎没有太多建议。你有没有试过让它工作起来?