我有一个 ”白色标签“安装到多个客户服务器上的应用程序。在任何给定的安装中,差异将包括内容、样式表和图形,还包括一些实际的代码/业务逻辑。我希望我的 TFS 服务器自动构建我的应用程序的所有风格。我有什么选择来做到这一点?例如我应该使用主题吗?#if 条件编译标志怎么样?

附:问题不在于如何设置构建服务器 - 我已经完成了。

有帮助吗?

解决方案

有关业务逻辑我将抽象的差异到一个单独的库,并且然后可以使用一个IoC / DI图案或提供商图案来解决在运行时正确的业务逻辑。

至于内容我会考虑的主题。从本质上讲,你可以有你的构建服务器构建所有代码一次,然后打包时,你选择哪个组件您需要的代码,并使用适当的配置,并选择手头的客户此时,相应的主题文件夹。

我不喜欢使用#指令在此情况下。如果你想想你的单元测试就必须对你有每个条件运行。如果删除条件语句和抽象的不同单元测试可以同时对所有的可插拔组件只运行。

其他提示

  1. 内容/图像 - 除了从正确的文件夹复制所需的文件(很简单,/Content + /ContentCustomer1, 2、...)。
  2. 我想没有单一的答案。一个简单的答案是将您的 Order.Calculate() 方法移至分部类,这样您就可以
    • OrderPartsForCustomer1.cs
    • OrderPartsForCustomer2.cs

你会在哪里

public partial class Order
{
   public Money Calculate()
   {
   }
}

然后,您只需包含所需的 .cs 类,并且不要用 #ifs 使您的代码变得混乱。

如果您想要所有人使用通用代码,并且仅针对特定客户进行覆盖,则可以使用 OrderPartsCommon.cs,如果没有特定于客户的覆盖,您将复制/使用该代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top