3

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

PS 问题不在于如何设置构建服务器——我已经这样做了。

4

2 回答 2

3

对于业务逻辑,我会将差异抽象到单独的库中,然后您可以使用 IoC / DI 模式或提供者模式在运行时解析正确的业务逻辑。

至于内容,我会研究主题。本质上,您可以让您的构建服务器构建所有代码一次,然后在打包代码时选择您需要的程序集并使用适当的配置,并为手头的客户端选择适当的主题文件夹。

在这种情况下,我不喜欢使用 # 指令。如果您考虑一下,您的单元测试将必须针对您拥有的每个条件运行。如果您删除条件并抽象出差异,您的单元测试可以一次在所有可插入程序集上运行。

于 2009-09-24T19:20:27.880 回答
0
  1. 内容/图像 - 除了从正确的文件夹复制所需的文件(很简单,/Content + /ContentCustomer1, 2,...)。
  2. 我想,没有单一的答案。一个简单的答案是将您的 Order.Calculate() 方法移动到部分类,以便您拥有
    • OrderPartsForCustomer1.cs
    • OrderPartsForCustomer2.cs

你会在哪里

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

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

如果您想要所有人的通用代码,并且只为特定客户覆盖,您可以拥有 OrderPartsCommon.cs,如果没有特定于客户的覆盖,您将复制/使用它。

于 2009-09-24T19:22:24.043 回答