我有一个wcf网络服务,可以部署到azure或on-prem。 我试图为两个场景都有一个共同的代码库,但每个sceanrio都有不同的web.config。 问题是,当wcf服务部署在azure上时,它需要与azure缓存实例通信,如果部署在本地,它将与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
如果代码必须在预先与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',则应加载AF on-Prem dll。 我想知道这是否可能使用运行时C#代码或通过Visual Studio前/后构建任务。 我愿意接受任何其他想法来实现这一目标。 有人可以确认这两个选项的可行性,如果有的话,请指出一些类似的代码。