1

我有一个 wcf Web 服务,可以部署到 azure 或本地。我试图为这两种场景提供一个通用代码库,但每个场景都有不同的 web.config。问题是,当 wcf 服务部署在 azure 上时,它需要与 azure 缓存实例通信,如果部署在 prem 上,它将与 Windows 应用程序结构缓存服务器通信。与两者对话的代码保持不变,因为它们本质上是相同的缓存产品。但是 - 如果 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 上的应用程序结构对话,则必须引用以下程序集。

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 中的“UseAzure = 1” .config 则应引用和加载 azure 缓存客户端 dll,如果“UseAzure = 0”,则应加载 AF on-Prem dll。我想知道这是否可以使用运行时 C# 代码或通过 Visual Studio 前/后构建任务来实现。我对实现这一目标的任何其他想法持开放态度。有人可以确认这两个选项的可行性,如果可以的话,请指出一些类似的代码。

4

0 回答 0